6

したがって、次のフラグメントがあるとしましょう。

Fragment1 Fragment2 DialogFragment Fragment3 Fragment4

次のフラグメントに移動するとします。各フラグメントはバック スタックに追加されます。

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

ダイアログフラグメント -> 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 で [戻る] ボタンをクリックすると、Fragment3 ではなく DialogFragment が表示されることです。

4

1 に答える 1