У меня есть приложение с несколькими действиями. До сих пор у меня была «жестко закодированная» иерархия между ними, поэтому у меня был андроид: parentActivityName, установленный явно в каждой из них (но в качестве активности запуска). Однако теперь я добавил настройки в меню более чем одного действия.Есть ли способ сделать кнопку «назад/вверх» AppCompat ActionBar действующей как кнопка «назад» системы
Есть ли способ, чтобы стрелка «назад» в панели действия функционировала как кнопка назад системы (в нижней части экрана)? Другими словами: если установлено parentActivityName, то оно возвращается к родительской активности, если нет, то оно закрывает активность и «возвращается» к предыдущему действию.
Это то, что я пробовал, но не работает. Если я не вызываю actionBar.setDisplayHomeAsUpEnabled (true), то на панели действий нет «обратной» стрелки, но если я вызову ее в активном режиме, у которого нет родительского атрибута, установленного в манифесте, тогда я получаю исключение, если Я нажимаю стрелку.
abstract public class BaseActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
final ActionBar actionBar = getSupportActionBar();
if (null != actionBar) {
actionBar.setDisplayHomeAsUpEnabled(getDisplayHomeAsUpEnabled());
}
}
protected abstract int getLayoutResourceId();
abstract protected boolean getDisplayHomeAsUpEnabled();
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
final int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
return true;
}
}
}
это все еще не помогает мне отображать стрелку, когда android: parentActivityName не задано в манифесте – Gavriel
@Gavriel Я не использую 'android: parentActivity', я просто использую' setDisplayHomeAsUpEnabled (true); 'с вышеуказанным кодом и его работа так же, как кнопка обратной системы –
ОК, это действительно работает. Теперь я могу вызвать actionBar.setDisplayHomeAsUpEnabled (true) для каждого действия. – Gavriel