我的Fragment
有一个FrameLayout
。该第一个片段(A)在其Framelayout内加载另一个片段(B)。当我从内部片段(B)调用getParentFragment
时,我得到null
。该方法应该如何正确使用?
答案 0 :(得分:44)
getParentFragment()是在API级别17(Android 4.2)中引入的。 Android 4.2引入了嵌套片段(包含其他片段的片段)的想法。如果片段的父级是Activity,则调用此结果为null。
查看this。
如果您正在使用支持库,则可以使用getParent(),可能需要在执行片段事务时使用getChildFragmentManager()。 见this
答案 1 :(得分:29)
在我的情况下,虽然我的fragmentA嵌套在fragmentB中,但是在FragmentA中调用getParentFragment之后我仍然为null。最后我发现我应该在FragmentB中使用getChildFragmentManager而不是getFragmentManager。
检查此What is difference between getSupportFragmentManager() and getChildFragmentManager()?
答案 2 :(得分:2)
有一点有用,就是在创建适配器时使用getChildFragmentManager()
。
如果您不使用适配器,请在执行交易时使用getChildFragmentManager()
。
setTargetFragment()
,因为它会在moveState()
片段上出错(因为片段应该与FragmentManager绑定)