如何正确使用嵌套片段?

时间:2013-08-29 17:41:01

标签: android android-fragments

我有一个应用程序,其中包含一个活动和许多片段,适用于安装了Android 4.0和用户支持的平板电脑.library.v4

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

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

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

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

当我开始处理后退行为时会出现问题。我开始在片段B中使用getShildFragmentManager()作为我的适配器,所以后面的开始显示前一个屏幕但是在这些片段之间多次点击之后:A - &gt; A1,C(D,E) - >返回 - &gt; A - &gt; A1,C(D,E) - >返回 - &gt; A - &gt; A1,C(D,E) - >返回 - &gt; [问题]我看到一个片段A但是没有看到片段B有时只是前面片段D和E的背景

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 使用嵌套在其他片段中的片段时使用ChildFragmentManger
  2. 在onPause()之后不要使用任何片段事务(你可以使用commitStateLoss(),但它不能解决所有问题,并且由于几个原因而不鼓励)
  3. 跟踪您孩子的碎片,不要忘记将其从后台拆除或重复使用