在我的主要活动中,我有一个带有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不会带来以前的片段”问题,您可能希望发布一些代码来帮助其他人重新构建问题以找到答案.
祝你有帮助.