getParentFragment返回null

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

Solutions Collecting From Web of "getParentFragment返回null"

getParentFragment()在API级别17(Android 4.2)中引入。 Android 4.2引入了嵌套片段的概念(包含其他片段的片段)。 如果该片段具有一个活动的父代,则调用此结果为null。

看看这个 。

如果您使用的是支持库,那么您可以使用getParent(),可能需要在执行片段事务时使用getChildFragmentManager()。 看到这个

在我的情况下,尽pipe我的fragmentA嵌套在fragmentB中,但在调用FragmentA中的getParentFragment之后仍然为null。 最后我发现我应该使用getChildFragmentManager而不是FragmentB中的getFragmentManager。

检查这getSupportFragmentManager()和getChildFragmentManager()之间有什么区别?

有帮助的是,在创build适配器时使用getChildFragmentManager()

如果您不使用适配器,请在执行事务时使用getChildFragmentManager()

不build议使用setTargetFragment() ,因为它会在moveState()上给出错误(因为fragment应该绑定到FragmentManager)

我遇到了同样的问题,并通过使用getChildFragmentManager()在父代片段中托pipe第二个片段来解决问题,那么您将不会得到空值…

父母片段

  SignUpFragment signUpFragment = new SignUpFragment(); getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment) .addToBackStack(null).commit(); 

小孩片段:我用过的是一个对话框

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