5

我有一个带有操作栏和操作栏选项卡的活动。当我从选项卡的内容中选择一个项目时,我试图用一个新的片段替换当前片段,将事务添加到后台堆栈,并隐藏选项卡。

我通过将操作栏导航模式更改为标准来隐藏选项卡。

问题是当我按下后退按钮时,我只是得到一个带有操作栏的空白视图(在标准模式下)。片段事务似乎没有被反转。

如果我不通过将导航模式更改为标准来隐藏选项卡,则事务撤销工作正常。

我已尝试覆盖后按以将导航模式更改回选项卡,但它不起作用。

有人可以告诉我他们将如何实现这一目标吗?

这是隐藏选项卡并发生片段事务的代码:

        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

        Fragment albumListFragment = new AlbumListFragment();
        albumListFragment.setArguments(bundle);
        FragmentTransaction ft = getFragmentManager().beginTransaction();

        ft.replace(android.R.id.content, albumListFragment);
        ft.addToBackStack(null);

        // Commit the transaction
        ft.commit();

为了清楚起见:我希望在提交此事务后按回,选项卡将与前一个片段一起重新出现。在按下后的那一刻,它没有显示选项卡或片段。

4

1 回答 1

8

不确定这个问题是否仍然相关,但我似乎很幸运在片段转换后隐藏了选项卡。

从我的 ListFragment 中,我做了一个标准的片段转换,与您在代码中的操作非常相似。

但是,在我的详细信息片段中,我在 onCreate 方法中隐藏了操作栏:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    ActionBar actionBar = getActivity().getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

}

并在我的 onPause 方法中再次显示:

public void onPause() {

    super.onPause();

    ActionBar actionBar = getActivity().getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

}
于 2012-12-11T16:04:55.440 回答