使用导航模式隐藏actionBar选项卡会对片段后台堆栈产生负面影响

时间:2012-08-05 03:32:51

标签: android android-fragments android-listfragment back-stack

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

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

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

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

我已尝试覆盖背面按下以将导航模式更改回标签,但它不起作用。

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

以下是隐藏选项卡并执行片段事务的代码:

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

为了清楚起见:我希望在提交此事务后按回来,标签将返回到前一个片段的视图。在按下后,它没有显示标签或片段。

1 个答案:

答案 0 :(得分: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);

}