getParentFragment返回null

时间:2013-02-11 00:58:57

标签: android android-fragments android-nested-fragment

我的Fragment有一个FrameLayout。该第一个片段(A)在其Framelayout内加载另一个片段(B)。当我从内部片段(B)调用getParentFragment时,我得到null。该方法应该如何正确使用?

3 个答案:

答案 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绑定)