所以可以说我有以下片段:
Fragment1 Fragment2 对话框Fragment Fragment3 Fragment4
假设我转到以下片段,每个片段都添加到后堆栈:
Fragment1 -> Fragment2 -> DialogFragment -> Fragment3 -> Fragment4
如果我单击 BACK 按钮,这通常会转到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();
同样的问题是,当我在 Fragment4 中并单击 BACK 按钮时,会显示 DialogFragment 而不是 Fragment3。