FragmentTwo
次の状況でバックスタックから消えるのはなぜですか。
- 私のアプリにはが
Fragment
呼び出さFragmentOne
れましたActivity
。 FragmentOne
を保持しButton
ます。クリックすると起動し、バックスタックFragmentTwo
に追加されFragment
ます。FragmentTwo
がありButton
、クリックすると、ActionBar
リンクされている2つFragments
のタブに2つのタブが追加さFragmentThree
れますFragmentFour
。FragmentThree
が表示されます。- ここで戻るボタンをクリックすると、が表示されるはず
FragmentTwo
です。代わりに、表示されますFragmentOne
。どこに行ったFragmentTwo
の?
onKeyDown()
自分のバックスタックをオーバーライドして実装を開始する前に、Fragments
私が見逃している明らかなものがあるかどうかを尋ねたいと思いましたか?これをテストするとき、構成の変更は発生しないことに注意してください。
詳細:
FragmentOneのボタンクリックハンドラーには次のものが含まれます。
FragmentTransaction ft = getFragmentManager().beginTransaction();
FragmentTwo fragment = new FragmentTwo();
ft.addToBackStack(null);
ft.replace(android.R.id.content, fragment).commit();
FragmentTwoボタンのクリックは、アクティビティで処理されます。
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
FragmentFour fragmentThree = new FragmentThree();
FragmentFive fragmentFive = new FragmentFive();
ActionBar.Tab tab = getActionBar().newTab().setText("Frag 3").setTabListener(new CustomTabListener<FragmentThree>(fragmentThree));
getActionBar().addTab(tab);
tab = getActionBar().newTab().setText("Frag 4").setTabListener(new CustomTabListener<FragmentFour>(fragmentFour));
getActionBar().addTab(tab);
タブリスナーは次のとおりです。
public static class CustomTabListener<T extends Fragment> implements TabListener {
Fragment fragment;
public CustomTabListener(Fragment fragment) {
this.fragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(android.R.id.content, fragment);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
Fragments
表示される前にバックスタックにさらに追加するFragmentThree
と、それは常に、そのFragment
直前だけFragmentThree
が消えます。
戻るキーを押してタブ付きユーザービューを終了し、に戻るとFragmentOne
、タブは引き続き表示されます。にリセットする必要があることは理解していますActionBar
が、の代わりにが表示されNAVIGATION_MODE_STANDARD
ている理由は明らかではありません。FragmentOne
FragmentTwo