片段管理器中的片段实例即使弹出了片段也没有删除

时间:2014-07-18 18:30:21

标签: android android-fragments android-viewpager android-orientation

我有一个带有列表视图的片段。 OnItem单击该列表视图我将用新片段替换片段的容器。新片段将具有视图寻呼机和片段状态寻呼机适配器。此适配器将创建三个片段一次。现在,所有五个片段(List片段,具有视图寻呼机的片段和由片段状态寻呼机适配器创建的三个片段)都在片段管理器中。如果我回到具有列表视图的片段。应从片段管理器中删除除列表视图之外的所有片段。但是,他们并没有删除。

问题是,如果我单击列表视图中的某个项目,它将始终创建三个片段。如果我进行方向更改,片段管理器将重新创建所有片段。每次我进行方向更改时,三个片段都会被添加到片段管理器中。

当我从视图寻呼机片段返回时,有没有办法删除与视图寻呼机相关联的片段。

1 个答案:

答案 0 :(得分:0)

没有看到代码,我认为这是你的问题:

每次您的方向更改时,都会向backstack添加新的片段管理器事务。当您弹出Backstack时,您不会返回到初始状态,而是返回另一个仍然可以看到相同片段的状态。

围绕它有多种方法。选择一个:

  1. 更换片段时,请勿将片段管理器事务添加到Backstack。当您需要返回初始片段时,只需用您想要的片段替换内容即可。如果您不想重新创建片段,则始终可以在活动中保留对片段的引用。

  2. 在替换片段并将另一个事务添加到backstack之前弹出backstack。这样您就不会在Backstack中累积事务。当您弹出时,您将始终返回到后一状态。

  3. 为您的片段交易命名,以便您可以使用popBackstack("fragmentTransactionName", 0)popBackStack(transactionId, 0)弹出后台堆叠 请参阅http://developer.android.com/reference/android/app/FragmentManager.html

  4. 希望这有帮助