【发布时间】:2012-10-23 04:33:33
【问题描述】:
我需要用不同的视图更新片段。 我发现,要强制 Fragment::onCreateView() 方法调用(向用户显示我的更新),我只能使用 FragmentTransaction 的方法 replace(, )。 如果我每次调用 FragmentTransaction::replace() 时创建一个新的 Fragment 和一个用于从 onCreateView() 方法返回它的新视图,效果会很好。 但我希望将一些观点留在记忆中。 如何重复使用我的视图?
问题是,如果我在一个新片段上使用我的视图(附加到已替换片段),我会得到一个异常: “java.lang.IllegalStateException: 指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()。”
所以,我尝试通过调用 FragmentTransaction.detach() 或 FragmentTransaction.remove() 将视图与片段分离,以导致从活动中删除片段,并从已替换的片段中删除我的视图,但这没有帮助。
有谁知道如何强制片段移除其子视图(在 onCreateView() 中返回?
【问题讨论】:
-
您最好将视图保留在 Fragment 中,以便 Fragment 本身适当地处理它。要么让无视图片段向该片段发送数据以更新视图,要么使用参数构建视图。它更干净,从长远来看,更易于维护。
-
@DeeV 请把它作为答案 :) 因为你是完全正确的。
-
好的,可以。感觉不对,但它就是答案。
标签: android view fragment reusability