如何重新使用片段的视图来获取新片段

时间:2012-11-02 13:49:48

标签: android view fragment reusability

我需要使用不同的视图更新片段。 正如我想的那样,强制Fragment :: onCreateView()方法调用(向用户显示我的更新)我只能使用FragmentTransaction的方法replace(,)。 如果我每次调用FragmentTransaction :: replace()时创建一个新的Fragment和一个用于从onCreateView()方法返回它的新视图,它的效果很好。 但我希望在记忆中保留一些观点。 我如何重用我的观点?

问题在于,如果我在一个新片段中使用我的视图(已附加到已经替换的片段),我会得到一个异常: “java.lang.IllegalStateException:指定的子节点已经有父节点。您必须首先在子节点的父节点上调用removeView()。”

因此,我尝试通过调用FragmentTransaction.detach()或FragmentTransaction.remove()来从片段中分离视图,从而导致从已经替换的片段中删除活动和我的视图中的片段,但它没有用。

有人知道如何强制片段删除其子视图(在onCreateView()中返回吗?

1 个答案:

答案 0 :(得分:2)

最好保持Fragment中包含的视图,以便Fragment本身适当地处理它。要么具有无视碎片将数据发送到该片段以更新视图或使用参数构建视图。它更清洁,从长远来看,更易于维护。

查看Adding a Fragment without UI部分。