Android фрагменты навигации и backstack
У меня есть строка заголовка (вроде меню) и 4 фрагмента (MAIN, A, B, C), из которых главным должен быть 'main/root' фрагмент для backstack.
Проблема у меня есть, когда пользователь через меню идет, например, MAIN > A > B > C. Если я просто использую backstack, он будет идти в обратном порядке, чего я не хочу. Мне нужна кнопка назад, чтобы вернуться к главному независимо от того, как пользователь перешел к одному из этих 3.
Мой текущий код (что неверно, он выходит из приложения, когда не в основном и текущем фрагмент переключается с другого неосновного фрагмента) выглядит так:
private void SwitchFragment(Fragment pFragment)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
if (_CurrentFragment == _Frag_Main)
ft.addToBackStack(null);
ft.commit();
_CurrentFragment = pFragment;
}
1 ответ:
Ваш стек должен содержать не более 2 фрагментов
Главная видна Main is onBackstack / aorborc виден. Пользователь нажимает на back = = > Main виден. Пользователь нажимает на back ==> application end
Я предполагаю, что A / B / C отображаются в одном и том же виде, поэтому в этом случае
Когда пользователь нажимает на ваше меню, вы должны проверить, отображается ли в данный момент A/ B / C, и заменить его выбранным пользователем.
private void displayFragment(Fragment pFragment) { Fragment fr = getSupportFragmentManager() .findFragmentById(R.id.main_fl_fragmentcontainer); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.main_fl_fragmentcontainer, pFragment); if (_CurrentFragment == _Frag_Main) { ft.addToBackStack(null); } ft.commit(); _CurrentFragment = pFragment; }
Может переопределить
OnBackPressed
метод вашей деятельности.