所以可以说我有以下 fragment :

fragment 1
fragment 2
对话 fragment
fragment 3
fragment 4

可以说我进入以下 fragment ,每个 fragment 都添加到了后堆栈中:

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

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

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

再次出现的问题是,当我进入Fragment4并单击“返回”按钮时,将显示DialogFragment而不是Fragment3。

最佳答案

显示DialogFragment时,请在“fragment ”中使用“Activity ”的 fragment 管理器,以避免从后堆栈中还原它。

10-07 13:36
查看更多