我使用getChildFragmentManager(),一个containerId和方法.add()在父片段代码中创建一个子片段。然后我尝试使用childFragmentManager(),同样的containerId和.replace()替换childfragment代码的onActivityCreated()方法中的childFragment,但此时我得到一个错误,说明fragmentTransaction对象或任何找不到视图的内容我的containerId用于片段“nameofchildfragclass”。
我在创建子项时验证了父项中的containerId,当我尝试替换子项时,在子项内部验证了(就像它们应该的那样)。
答案 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()