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 8

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 метод вашей деятельности.