我有一个Fragment
有一个FrameLayout
。第一个片段 (A) 在其 Framelayout 中加载另一个片段 (B)。当我getParentFragment
从内部片段(B)调用时,我得到null
. 这种方法应该如何正确使用?
问问题
36188 次
4 回答
37
就我而言,虽然我的fragmentA嵌套在fragmentB中,但是在FragmentA中调用getParentFragment后我仍然得到null。最后我发现我应该在 FragmentB 中使用 getChildFragmentManager 而不是 getFragmentManager。
检查这个getSupportFragmentManager() 和 getChildFragmentManager() 有什么区别?
于 2013-09-29T10:54:40.733 回答
5
有帮助的一件事是,在创建适配器时使用getChildFragmentManager()
.
如果您不使用适配器,只需getChildFragmentManager()
在进行事务时使用。
setTargetFragment()
不推荐,因为它会给出moveState()
片段错误(因为片段应该绑定到 FragmentManager)
于 2016-06-21T04:07:28.503 回答
4
我遇到了同样的问题,并通过在您的父片段中托管第二个片段来解决问题,getChildFragmentManager()
然后您将不会获得空值......
父片段
SignUpFragment signUpFragment = new SignUpFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.contentPanel, signUpFragment)
.addToBackStack(null).commit();
子片段:我使用的是一个对话框
HospitalCardDialog hospitalCardDialog = new HospitalCardDialog();
hospitalCardDialog.show(getChildFragmentManager(), "");
于 2016-12-05T09:44:25.180 回答