我的嵌套片段中的getParentFragment()
返回null
。我意识到获得null
意味着片段附加到活动而不是嵌套的容器片段。但是我使用子FragmentManager
显式地将子片段嵌套在父片段中,因此认为我不应该得到null
。你能告诉我我错过了什么吗?
父片段
public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {
....
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
}
...
}
子片段
public class Filter extends Fragment {
...
public Filter() {
if (getParentFragment() == null)
Log.d(LOG_TAG, "parent fragment is null");
}
...
}
答案 0 :(得分:35)
我在子片段的构造函数中调用getParentFragment()
,因此在子片段完全创建之前。将getParentFragment()
移至onCreateView()
解决了问题。移动不是问题,因为我正在调用getParentFragment()
来检查父片段是否实现了子片段交互监听器。