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

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

最佳答案

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

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

每个片段都有getFragmentManager和getChildFragmentManager。

片段父级:使用childFragmentManager添加子级。 (现在添加的片段是此父片段的子代)

片段子:调用getFragmentManager获取父对象的ChildFragmentManager。调用getChildFragment将提供一个新的FragmentManager以在该片段内添加子代。不需要什么)

10-08 06:58