为什么在以下情况下,FragmentTwo会从backbackback中消失:
我的应用程序在Fragment中有一个名为FragmentOneActivity
FragmentOne保持aButton。单击后,将启动FragmentTwo,并将其添加到Fragmentbackbackback中。
FragmentTwo有一个Button,单击它会将两个选项卡添加到链接到两个ActionBarFragmentsFragmentThreeFragmentFour中。FragmentThree可见。
如果我现在单击back按钮,我希望看到FragmentTwo。相反,我看到了FragmentOne。去哪儿了?
在覆盖FragmentTwo并开始为onKeyDown()实现自己的backback之前,我想问是否有明显的遗漏?注意,测试时没有发生配置更改。
细节:
FragmentOne的按钮单击处理程序包含:

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    FragmentTwo fragment = new FragmentTwo();
    ft.addToBackStack(null);
    ft.replace(android.R.id.content, fragment).commit();

活动中处理碎片两个按钮的单击:
    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之前向backback添加更多Fragments,则始终且仅在FragmentThree之前的Fragment消失。
当我按back键离开选项卡式用户视图并返回FragmentThree时,选项卡仍在显示。我知道我需要将FragmentOne重置为ActionBar,但不清楚为什么显示NAVIGATION_MODE_STANDARD而不是FragmentOne

最佳答案

我想问题是如果你建立你的标签

public void onTabSelected(Tab tab, FragmentTransaction ft) {
    ft.replace(android.R.id.content, fragment);
}

调用,并且之前的片段不会添加到backbackback中。
你有打电话给我吗
ft.addToBackStack(null);

在片段中两个按钮处理代码。
但无论如何,您都需要实现onBackPressed()来摆脱标签页。我想我会用标签做新的活动。

07-25 22:05