У меня проблема, с которой я столкнулся последние пару дней и, похоже, не нахожу ответа на нее.Android BackStack NavigationDrawer
Описание: У меня есть основное действие, которое содержит ящик для навигации. Каждый элемент навигационного ящика (при нажатии) создает фрагмент. В этом фрагменте есть listView объектов, который создает другие фрагменты при нажатии. В этих фрагментах у меня есть еще один listView объектов, который открывает другие фрагменты. Другими словами, существует ряд фрагментов, которые открывают другой фрагмент. Что-то вроде этого:
http://s22.postimg.org/pddo5gsv5/backstack.png
Для того, чтобы иметь возможность вернуться к каждому фрагменту, я реализовал метод addToBackstack («строка»).
Мой вопрос в том, как я могу выполнить правильную загрузку для моего приложения, так что, когда я нажимаю элемент «Навигационный элемент навигации», все фрагменты, которые были добавлены в backstack, очищаются, без того, что открывается элемент «Ящик навигации».
Любая помощь будет оценена по достоинству. Спасибо !
EDIT
Хорошо, кажется, мне удалось понять это. Принимая во внимание, что советы я получил от ответов, вот решение, которое я придумал:
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count != 0) {
FragmentManager.BackStackEntry backEntry = getFragmentManager()
.getBackStackEntryAt(
getFragmentManager().getBackStackEntryCount() - 1);
if (backEntry.getName() == NAVIGATION) {
finish();
} else
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
Выражаясь словами: Во-первых, я добавил запись backstack даже для фрагментов верхнего уровня, учитывая их конкретный тег. Я переопределил функцию кнопки «Назад» активности, так что, когда последняя запись назад - это фрагмент верхнего уровня для завершения действия (чтобы он не просто отделял фрагмент от активности, а оставался пустой). В противном случае, если последняя запись не является фрагментом верхнего уровня, выполните popBackStack. PS: все фрагменты не-верхнего уровня добавляются в стопку с другим тегом, а затем верхний уровень. Кроме того, я должен был сделать POP_BACK_STACK_INCLUSIVE в приложении для прослушивания кликов навигации.
getFragmentManager().popBackStack(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
Благодарим всех вас за советы и, надеюсь, этот EDIT поможет другим пользователям.
Все больше и больше я работаю с компоновкой ящика. Я думаю, что приложение «iosched» использовало наилучшую возможную вещь. В нескольких действиях каждый имеет свой собственный фрагмент контента и свой собственный ящик с предварительно выбранным сектором, поэтому вы работаете только с стеком активности и не должны беспокоиться о стеке фрагментов. «Для тебя это моя мудрость». –