如何正确处理嵌套片段



我有一个应用程序,它有一个活动和许多片段,可以在Android 4.0和用户支持的平板电脑上运行。library.v4

第一个屏幕显示两个片段A和B:

----------------------------------
A      | B   <view pager>
       |------------------------
<list  |
view>  |
       |     <view pager>
       |
----------------------------------

点击A项目后,我添加了一个新的片段A,并为当前片段A添加了添加到后台的stask。我显示了新的片段A1,C-C包括嵌套的片段D和E,通过替换(,D,)添加而不添加到后台

----------------------------------
A1     |             C
       |
<list  |    D      |     E
view>  |           |
       |           |
       |           |
----------------------------------

当我开始研究背部行为时,问题就会出现。我开始在片段B中为我的适配器使用getShildFragmentManager(),因此反向启动显示前一个屏幕,但在这些片段之间多次单击后:a->A1,C(D,E)->back->a->A1、C(D、E)->back->[SISSUE]我看到片段a,但没有看到片段B,有时只是前一个片段D和E的背景

你能告诉我我的问题在哪里吗?

附加信息1) 我为片段A和B设置了两个framelayout容器的布局2) A是列表片段3) 用户点击A的项目4) A被新的A实例替换,A被添加到backsak中;B被新的片段C取代,该片段具有用于D和E片段的两个framelayout容器的布局5) 用户点击A实例,C通过repalce显示D和E片段,不将此事务添加到后台6) 用户单击返回7) 返回步骤1)

所以过了一段时间我找到了解决方案:

  1. 使用嵌套在其他片段中的片段时,请使用ChildFragmentManger
  2. 在onPause()之后不要使用任何片段事务(您可以使用commitStateLoss(),但它并不能解决所有问题,而且有几个原因使它不受欢迎)
  3. 跟踪你孩子的碎片,别忘了把它们从背后拿走或重复使用