Android getParentFragment返回null

Android getParentFragment返回null,android,android-fragments,android-nested-fragment,Android,Android Fragments,Android Nested Fragment,我有一个片段,它有一个框架布局。第一个片段(A)在其框架布局中加载另一个片段(B)。当我从内部片段(B)调用getParentFragment时,我得到null。如何正确使用此方法?getParentFragment()是在API级别17(Android 4.2)中引入的。安卓4.2引入了嵌套片段(包含其他片段的片段)的概念。如果片段具有作为活动的父级,则调用此函数将导致null 看一看 如果您使用的是支持库,则可以使用getParent(),可能在执行片段事务时需要使用getChildFrag

我有一个
片段
,它有一个
框架布局
。第一个片段(A)在其框架布局中加载另一个片段(B)。当我从内部片段(B)调用
getParentFragment
时,我得到
null
。如何正确使用此方法?

getParentFragment()是在API级别17(Android 4.2)中引入的。安卓4.2引入了嵌套片段(包含其他片段的片段)的概念。如果片段具有作为活动的父级,则调用此函数将导致null

看一看

如果您使用的是支持库,则可以使用getParent(),可能在执行片段事务时需要使用getChildFragmentManager()。
在我的例子中,尽管我的fragmentA嵌套在fragmentB中,但是在fragmentA中调用getParentFragment后,我仍然得到null。最后我发现我应该在FragmentB中使用getChildFragmentManager而不是getFragmentManager


选中此项

有帮助的一件事是,在创建适配器时使用
getChildFragmentManager()

如果您没有使用适配器,则在执行事务时只需使用
getChildFragmentManager()


不建议使用
setTargetFragment()
,因为它在片段的
moveState()
上给出了错误(因为片段应该绑定到FragmentManager)

我遇到了同样的问题,并通过使用
getChildFragmentManager()在父片段中托管第二个片段修复了问题
这样您就不会得到空值

父片段

  SignUpFragment signUpFragment = new SignUpFragment();
    getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment)
            .addToBackStack(null).commit();
子片段:我使用的是一个对话框

 HospitalCardDialog hospitalCardDialog = new HospitalCardDialog();
    hospitalCardDialog.show(getChildFragmentManager(), "");

非常感谢。我使用了setTargetFragment。我知道它不是为了这个目的,而是为了做这个工作。它是在4.2中引入的,但可以在早期版本中使用,使用支持库为什么findFragmentByTag在子片段(即嵌套)中不起作用?请注意,还有一个限制,即当布局包含标记时,不能将布局膨胀为
片段
。只有通过
getChildFragmentManager()
动态添加到
片段时,才支持嵌套的
片段。