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

前端之家收集整理的这篇文章主要介绍了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相关文章