所以可以说我有以下 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 管理器,以避免从后堆栈中还原它。