android – 片段交易,操作栏和后台堆栈

在我的主要活动中,我有一个带有NAVIGATION_MODE_TABS的操作栏.每个选项卡的内容都是一个listfragment.

我想这样做,以便在点击列表项时,一个新的片段进入视图,并且操作栏模式更改为NAVIGATION_MODE_STANDARD(以便现在隐藏选项卡).

我已设法使用以下代码

在listitemclick方法中:

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

        Log.i("FragmentList","Item clicked: " + id);

问题是当我按下后退按钮时,标签仍然消失,前一个片段不会返回到视图中.

我做错了什么..是否与碎片堆叠有关?我应该采取另一种方式,甚至覆盖背压吗?

– 编辑 –

为清楚起见 – 我在调用fragmenttransaction.replace时调用addToBackStack,但是当我按下后退按钮时,前一个片段不会被恢复.

解决方法

也许这有点晚了,我试图重建你的问题好几个小时但没有成功.我试图通过问题中描述的方式从ActionBar Tab托管的片段中的listview切换到另一个视图(即ft.replace(android.R.id.content,albumListFragment);)但没有效果.在一些google和stackoverflow之后,我使用 this way在选项卡中成功切换片段,但没有问题.

由于“操作栏未正确显示”问题,它可能是由android developer guide中描述的后台恢复和UI更改引起的.您可能会尝试覆盖onBackStackChanged()回调并重新构建UI.

由于“backstack不会带来以前的片段”问题,您可能希望发布一些代码来帮助其他人重新构建问题以找到答案.

祝你有帮助.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...