1

我使用 getChildFragmentManager()、containerId 和方法 .add() 在父片段代码中创建子片段。然后我尝试使用 childFragmentManager()、相同的 containerId 和 .replace() 在 childfragment 代码的 onActivityCreated() 方法中替换该 childFragment,但此时我收到一条错误消息,指出 fragmentTransaction 对象或任何找不到视图对于我的 containerId 片段“nameofchildfragclass”。

我验证了当我创建孩子时父级中的 containerId 和我尝试替换孩子时在子级中的 containerId 是相同的(因为它们应该是)。

4

2 回答 2

1

当您在 ChildFragment 中时,请使用 getSupportFragmentManager(如果您不使用支持,则使用 getFragmentManager)而不是 getChildFragmentManager。

这将返回创建 ChildFragment 的片段管理器,它是您使用 ChildFragmentManager 的 ChildFragment 的父级。

每个片段都有getFragmentManager 和getChildFragmentManager。

Fragment parent:使用 childFragmentManager 添加 Child。(现在添加的片段是这个父片段的子片段)

Fragment child:调用 getFragmentManager 获取 parent 的 ChildFragmentManager。调用 getChildFragment 将提供一个新的 FragmentManager 以在该片段中添加子级。不是你需要的)

于 2016-03-21T18:16:36.440 回答
1

在子代码里面,要替换子代码,需要使用

getParentFragment().getChildFragmentManager()

不是

getChildFragmentManager()
于 2016-03-23T17:24:33.963 回答