Как установить родительскую активность действия во время выполнения?
У меня есть произвольное количество иерархически вложенных представлений / действий. На панели действий должна отображаться кнопка навигации вверх для перехода на более высокий уровень в любом представлении. Для этого в документации Google говорится, что я должен установить родительское действие с тегом в определении xml действия. Однако я создаю свои действия динамически, и дочерний элемент может иметь ту же активность, что и его родительский элемент.
Итак, как мне установить родительское действие на фактический родительский экземпляр во время выполнения?
2 ответа
Похоже, вы путаете навигацию вверх и назад.
Кнопка вверх должна быть детерминированной. На данном экране кнопка "вверх" должна всегда выводить пользователя на один и тот же экран.
Кнопка назад не всегда должна выводить пользователя на один и тот же экран. Назначение кнопки "Назад" - помочь пользователю в хронологическом порядке перемещаться назад по вашему приложению. Это должно привести пользователя к предыдущему экрану.
Если нет четкой иерархии экранов (например, нет родительских / дочерних экранов), то вам, возможно, вообще не потребуется реализовывать навигацию вверх.
См.: Навигация с помощью Вверх и Назад
Один из вариантов переопределения поведения кнопок "вверх" по умолчанию - просто перехватывать нажатия кнопок вверх и обрабатывать их самостоятельно. Например:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
// Launch the correct Activity here
return true;
}
return super.onOptionsItemSelected(item);
}
Существует два способа правильной поддержки навигации вверх.
Смотрите мой ответ на аналогичный вопрос здесь: /questions/37430853/dinamicheski-ustanovit-roditelskuyu-aktivnost/37430867#37430867