Tim*_*eed 7 android android-fragments android-actionbar
在我的主要活动中,我有一个动作栏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);
Run Code Online (Sandbox Code Playgroud)
问题是当我按下后退按钮时,标签仍然消失,前一个片段不会返回到视图中.
我做错了什么..是否与碎片堆叠有关?我应该采取另一种方式,甚至覆盖背压吗?
- 编辑 -
为清楚起见 - 我在调用fragmenttransaction.replace时调用addToBackStack,但是当我按下后退按钮时,前一个片段不会被恢复.
Gee*_*ugs -1
后退栈结束当前活动并转到前一个活动,而不是前一个片段。(请参阅后台堆栈指南:http://developer.android.com/guide/components/tasks-and-back-stack.html)。
正如您所建议的,您可以通过重写 onBackPressed 来强制执行该行为,但是,我不知道我会以这种方式改变自然的 Android 行为。如果您查看其他执行类似操作的应用程序,特别是核心应用程序,则后退按钮不会转到上一个片段,而是转到上一个 Activity。
此外,您还可以完全控制“向上”按钮的行为(即操作栏上带有向左箭头的应用程序图标)。您必须以编程方式将其设置为用作按钮,如 ActionBar 指南中所述(如果您需要知道如何执行此操作,请告诉我),并且您可以让它在堆栈上设置您之前的片段维持某处。
| 归档时间: |
|
| 查看次数: |
4869 次 |
| 最近记录: |