Android: проблемы с фрагментом диалога и Backstack

Допустим, у меня есть следующие фрагменты:

Фрагмент1 Фрагмент2 Диалог Фрагмент Фрагмент3 Фрагмент4

Допустим, я перехожу к следующим фрагментам, каждый фрагмент добавляется в задний стек:

Fragment1 -> Fragment2 -> DialogFragment -> Fragment3 -> Fragment4

Если я нажимаю кнопку НАЗАД, обычно происходит переход к Fragment3, но вместо этого отображается DialogFragment.

Вот фрагменты транзакций, которые я использовал:

Фрагмент1 -> Фрагмент2

FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
ft.replace(R.id.mainContentHolder, new Fragment2(), "Fragment2");
ft.addToBackStack(null);
ft.commit();

Fragment2 -> DialogFragment

FragmentTransaction ft2 = getFragmentManager().beginTransaction();
ft2.setCustomAnimations(R.anim.flipp_in,R.anim.flipp_static);
ft2.add(R.id.mainContentHolder, new DialogFragment(), "DialogFragment");
ft2.addToBackStack(null);   
ft2.commit();
ft2.hide(Fragment1.this);

DialogFragment -> Fragment3

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.replace(R.id.mainContentHolder, new Fragment3(), "Fragment3");
ft.addToBackStack(null);
ft.commit();

Фрагмент3 -> Фрагмент4

FragmentTransaction ft = getFragmentManager().beginTransaction();                                           
ft.replace(R.id.mainContentHolder, new Fragment4(), "Fragment4");
ft.addToBackStack(null);                        
ft.commit();

Снова проблема в том, что когда я нахожусь во фрагменте 4 и нажимаю кнопку НАЗАД, вместо фрагмента 3 отображается DialogFragment.


person Eric Bergman    schedule 11.09.2013    source источник


Ответы (1)


Пожалуйста, используйте диспетчер фрагментов вашей активности во фрагментах при отображении DialogFragment, чтобы не восстанавливать его из заднего стека.

person tikhonos    schedule 27.02.2018