Как установить родительскую активность действия во время выполнения?

У меня есть произвольное количество иерархически вложенных представлений / действий. На панели действий должна отображаться кнопка навигации вверх для перехода на более высокий уровень в любом представлении. Для этого в документации 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

Другие вопросы по тегам