getParentFragment返回null

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

  • onActivityResult()不在新的嵌套片段API中调用
  • 嵌套片段转换不正确
  • TabFragment中的ViewPager不会第二次加载
  • getChildFragmentManager()和支持库
  • getChildFragmentManager()以编程方式(dynamic)添加碎片?
  • Fragment里面的FragmentPagerAdapter
  • FragmentTabHost不在android中创build片段内的视图
  • Android:你可以嵌套片段?
  • 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(), "");