Добавить кнопку возврата в панель действий

Я пытаюсь добавить кнопку возврата в панель действий.

Я хочу, чтобы мой взгляд выглядел так: Введите описание изображения здесь

Я хочу добавить кнопку «Назад» в левой части панели действий.

Я добавил этот код

ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); 

Но это не сработает.

Как я могу это исправить?

Solutions Collecting From Web of "Добавить кнопку возврата в панель действий"

После установки actionBar.setHomeButtonEnabled(true);

Добавьте следующий код:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; goto parent activity. this.finish(); return true; default: return super.onOptionsItemSelected(item); } } 

Добавить

 actionBar.setHomeButtonEnabled(true); 

И затем добавьте следующее

 @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(menuItem); } } 

Как было предложено naXa, я добавил чек на itemId , чтобы он работал правильно, если на панели действий есть несколько кнопок.

После установки

  actionBar.setHomeButtonEnabled(true); 

Вы должны настроить родительскую активность в своем AndroidManifest.xml

 <activity android:name="com.example.MainActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat" /> <activity android:name="com.example.SecondActivity" android:theme="@style/Theme.AppCompat" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.MainActivity" /> </activity> 

Дополнительную информацию смотрите здесь http://developer.android.com/training/implementing-navigation/ancestral.html

Этот работал для меня:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your_activity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // ... other stuff } @Override public boolean onSupportNavigateUp(){ finish(); return true; } 

Метод onSupportNavigateUp () вызывается при использовании кнопки «Назад» в SupportActionBar.

Есть два способа приблизиться к этому.

Вариант 1: обновите манифест Android. Если параметры активности всегда вызываются из одной активности, вы можете установить связь в манифесте Android. Android автоматически отобразит кнопку «назад» в ActionBar

 <activity android:name=".SettingsActivity" android:label="Setting Activity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.example.MainActivity" /> </activity> 

Вариант 2: измените настройку для ActionBar. Если вы не знаете, какая из операций вызовет действие «Настройки», вы можете создать ее так. Сначала в вашей деятельности, которая расширяет ActionBarActivity (убедитесь, что ваш @imports соответствует уровню совместимости, который вы ищете).

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings_test); ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } 

Затем нажмите кнопку «Назад» и сообщите Android, чтобы закрыть текущую активность.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; goto parent activity. this.finish(); return true; default: return super.onOptionsItemSelected(item); } } 

Это должно быть!

Вам нужно будет проверить menuItem.getItemId() на android.R.id.home в методе onOptionsItemSelected

Дубликат кнопки Android Sherlock ActionBar Up

Используйте это, чтобы отобразить кнопку «Назад» и перейти к предыдущей операции,

 final ActionBar actionBar = getSupportActionBar(); assert actionBar != null; actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.back_dark); @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } 

Проще и лучше: для API> = 16

Просто добавьте «parentActivityName» для каждого действия в манифесте. Кнопка «Назад» автоматически перейдет к родительской активности.

 <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > 

Во-первых Используйте это:

ActionBar bar = getSupportActionBar ();

bar.setDisplayHomeAsUpEnabled (истина);

Затем установите операцию нажатия кнопки в методе onOptionsItemSelected

  @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } 

Если кому-то еще нужно решение

 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); } return super.onOptionsItemSelected(item); } 

Добавьте эту строку в метод onCreate ()

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Затем переопределить этот метод

  @Override public boolean onSupportNavigateUp(){ finish(); return true; }