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

Tim*_*eed 5 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();
Run Code Online (Sandbox Code Playgroud)

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

小智 8

不确定这个问题是否仍然相关,但在片段转换后我好像隐藏了标签.

从我的ListFragment中,我做了一个非常类似于你在代码中执行它的标准片段转换.

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

@Override
public void onCreate(Bundle savedInstanceState) {

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

}
Run Code Online (Sandbox Code Playgroud)

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

public void onPause() {

    super.onPause();

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

}
Run Code Online (Sandbox Code Playgroud)