Добавить кнопку Назад в панель действий
Я пытался добавить кнопку Назад в панель действий.
Я хочу, чтобы мой вид, чтобы выглядеть так:
Я хочу, чтобы добавить кнопку "Назад" в левой части панели действий.
Я добавил этот код
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
но это не работает.
Как я могу это исправить?
11 ответов:
после установки
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
, чтобы он работал правильно, если на панели действий есть несколько кнопок.
Это один работал для меня:
@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 () вызывается при использовании кнопки Назад в панели поддержки.
после установки
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
есть два пути.
Вариант 1: Обновление Манифеста Android Если действие настройки всегда вызывается из одного и того же действия, вы можете создать связь в Манифесте Android. Android автоматически покажет кнопку "Назад" в панели действий
<activity android:name=".SettingsActivity" android:label="Setting Activity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.example.MainActivity" /> </activity>
Вариант 2: Измените настройку для панели действий Если вы не знаете, какое действие вызовет действие настроек, вы можете создать его следующим образом. Во-первых, ваша активность, которая расширяет 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
метод
проще и лучше: Для API >= 16
просто добавьте "parentActivityName" для каждого действия в Манифесте. Кнопка "Назад" автоматически приведет вас к родительской активности.
<activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" >
используйте это, чтобы показать кнопку назад и перейти к предыдущему действию,
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); } }
во-первых, используйте это:
ActionBar bar = getSupportActionBar ();
бар.setDisplayHomeAsUpEnabled (true);
затем установите операцию нажатия кнопки в методе onOptionsItemSelected
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } }