为什么会FragmentTwo
在以下情况下从后台消失:
- 我的应用程序有一个
Fragment
被调用FragmentOne
的Activity
. FragmentOne
持有一个Button
。单击时,它会启动FragmentTwo
,并将其添加到Fragment
backstack 中。FragmentTwo
有一个Button
,当单击它时,将两个选项卡添加到ActionBar
链接到两个的Fragments
,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 按钮点击在 Activity 中处理:
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
之前添加更多到 backstack FragmentThree
,它总是并且只有Fragment
前FragmentThree
一个消失了。
当我通过按返回键离开选项卡式用户视图并返回时FragmentOne
,选项卡仍在显示。我知道我需要将 重置ActionBar
为NAVIGATION_MODE_STANDARD
,但不清楚为什么FragmentOne
显示而不是FragmentTwo
.