安卓:Dialog Fragment 和 Backstack 问题

7

假设我有以下片段:

Fragment1 Fragment2 DialogFragment Fragment3 Fragment4

假设我进入以下片段,每个片段都被添加到后退栈中:

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

如果我点击返回按钮,通常会回到Fragment3,但实际上会显示DialogFragment。以下是我使用的Fragment事务:Fragment1 -> Fragment2。请帮我检查一下。
FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
ft.replace(R.id.mainContentHolder, new Fragment2(), "Fragment2");
ft.addToBackStack(null);
ft.commit();

片段2 -> 对话框片段

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();

Fragment3 -> Fragment4

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

问题再次出现在当我在Fragment4中点击BACK按钮时,DialogFragment被显示出来,而不是Fragment3。

1个回答

0
请在使用DialogFragment时,在Fragments中使用Activity的FragmentManager来避免从后退栈中恢复它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接