android - 如何使用子片段管理 Backstack?
问题描述
我遇到了嵌套/子片段的问题。我的用例是:我将 Frag A 作为父片段FragChild1
,将FragChild2
,FragChild3
作为子片段显示在Frag A
. 现在在 FragChild3 的背压上,它应该像这样工作:
FragChild3 -> FragChild2 -> FragChild1 -> FragA(ParentFrag)。
我用来添加子片段的代码是 -
for ChildFrag1-
Fragment mChildFragment1 = new ChildFragment1();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.container_view, mChildFragment1);
transaction.addToBackStack("FragChild1");
transaction.commit();
for ChildFrag2-
Fragment mChildFragment2 = new ChildFragment2();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.container_view, mChildFragment2);
transaction.addToBackStack("FragChild2");
transaction.commit();
我已经通过 StackOverflow 搜索了相关答案,但还没有找到任何正确的答案/管理子片段的 backstack 的方法。
解决方案
你的代码看起来不错。只需覆盖onbackpressed
包含父片段的活动中的方法并将给定的代码放入其中。
if (parentfragment.getChildFragmentManager().getBackStackEntryCount() > 1) {
parentfragment.getChildFragmentManager().popBackStackImmediate();
} else {
super.onBackPressed();
}
推荐阅读
- c# - 如何在 ASP.NET 后面的代码中使用生成的 ID
- java - 如何将数据附加到套接字连接以便在 `SessionDisconnectEvent` 上获取此数据?
- android - 如何在 Android 上有效地测试多线程、多进程、多设备代码?
- mysql - mysql unix_timestamp 重复日期时间
- css - 使用来自另一个元素的选择器定位一个元素
- java - 如何在一个片段中显示我的微调器
- c - 用于套接字 SSL 的 Windows API
- java - 如何提高与空间搜索相关的 Solr 查询的性能?
- javascript - 如何将视频数据发送到 Kinesis Video Stream?
- c++ - 在指向各种 Person 实例的 unique_ptrs 向量中访问名为 Truck 的派生类的成员函数的语法是什么?