【问题标题】:How to reuse fragment's view for a new fragment如何为新片段重用片段的视图
【发布时间】: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


【解决方案1】:

您最好将视图包含在 Fragment 中,以便 Fragment 本身适当地处理它。要么让无视图片段向该片段发送数据以更新视图,要么使用参数构建视图。它更干净,从长远来看,更易于维护。

查看Adding a Fragment without UI 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多