Добавить кнопку возврата в панель действий
Я пытаюсь добавить кнопку возврата в панель действий.
Я хочу, чтобы мое представление выглядело так:
![enter image description here]()
Я хочу добавить кнопку "Назад" в левой части панели действий.
Я добавил этот код
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
но это не сработает.
Как я могу это исправить?
Ответы
Ответ 1
После настройки
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);
}
}
Ответ 2
Добавить
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
, чтобы она работала правильно, если на панели действий есть несколько кнопок.
Ответ 3
этот работал у меня:
@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.
Ответ 4
После установки
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
Ответ 5
Есть два способа приблизиться к этому.
Вариант 1: обновите манифест Android
Если параметры Activity всегда вызываются из одного и того же действия, вы можете установить связь в манифесте 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);
}
}
Это должно сделать это!
Ответ 6
Вам нужно проверить menuItem.getItemId()
на android.R.id.home
в методе onOptionsItemSelected
Дубликат Кнопка Android Sherlock ActionBar Up
Ответ 7
Проще и лучше:
Для API >= 16
Просто добавьте "parentActivityName" для каждого действия в манифесте. Кнопка "Назад" автоматически переместит u в родительскую активность.
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
Ответ 8
Используйте это, чтобы отобразить кнопку "Назад" и перейти к предыдущей операции,
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);
}
}
Ответ 9
Сначала используйте это:
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);
}
}
Ответ 10
если кому-то еще нужно решение
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
Ответ 11
Добавьте эту строку в метод onCreate()
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
затем переопределить этот метод
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}