#java #android #android-fragments #fragment
#java #Android #android-фрагменты #фрагмент
Вопрос:
Я внедряю в свое приложение следующее руководство: Создание панели навигации.
Моя цель — реализовать следующее поведение:
- Использование одного действия
- 2 Фрагмента: Фрагмент всегда прикреплен. Фрагмент B прикрепляется при нажатии кнопки
- Когда фрагмент B виден, кнопка «Домой» на панели действий представляет собой стрелку назад, которая удаляет фрагмент B из фонового стека
- Когда фрагмент B не виден, кнопка панели действий «Главная» отображает макет ящика.
Как я могу реализовать это преобразование кнопки «Домой»?
Спасибо
Ответ №1:
В классе ActionBar есть несколько методов, которые могут помочь вам:
Следующий вызов установит значок кнопки «Домой» на значок «назад».
getActionBar().setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP);
Поскольку действие MenuItem определяется методом onOptionsItemSelected(), вам также необходимо переопределить его и проверить, нажимаете ли вы кнопку home или нет. На самом деле, панель навигации будет отображаться снова, поэтому вы захотите вернуть true из этого метода, чтобы предотвратить повторное отображение панели.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getId() == android.R.id.home) {
// do what you want here
return true; // prevent the drawer to draw again;
}
return super.onOptionsItemSelected(item);
}
Чтобы вернуть кнопке home «поведение» по умолчанию, используйте следующий вызов:
getActionBar().setDisplayShowHomeEnabled(true);
Последний шаг — проверить, является ли ваш текущий фрагмент FragmentA (который активирует панель, отображающую фрагмент навигации) или FragmentB (который этого не делает). Возможно, вы захотите добавить глобальную логическую переменную для их выполнения и проверить положение элемента навигации.
Я включил сюда пример, пожалуйста, ознакомьтесь:
Надеюсь, это поможет.