getChildFragmentManager()和containerId

时间:2016-03-21 18:10:20

标签: android fragment android-nested-fragment child-fragment

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

我在创建子项时验证了父项中的containerId,当我尝试替换子项时,在子项内部验证了(就像它们应该的那样)。

2 个答案:

答案 0 :(得分:1)

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

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

每个片段都有getFragmentManager和getChildFragmentManager。

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

Fragment child:调用getFragmentManager获取父级的ChildFragmentManager。调用getChildFragment会给出一个新的FragmentManager来在这个片段中添加child。不是你需要的东西)

答案 1 :(得分:1)

当在子代码内部时,要替换孩子,需要使用

getParentFragment().getChildFragmentManager()

getChildFragmentManager()