1

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

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

因此,我尝试通过调用 FragmentTransaction.detach() 或 FragmentTransaction.remove() 将视图与片段分离,以导致从活动中删除片段并从已替换的片段中删除我的视图,但这无济于事。

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

4

1 回答 1

2

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

查看添加没有 UI 的片段部分。

于 2012-11-02T14:15:59.197 回答