📜  如何解决 FragmentManager fm =getActivity().getSupportFragmentManager(); (1)

📅  最后修改于: 2023-12-03 15:38:54.050000             🧑  作者: Mango

如何解决 FragmentManager fm = getActivity().getSupportFragmentManager();

在开发中,我们经常会遇到获取 FragmentManager 的需求,而使用如下代码获取 FragmentManager 时可能会出现 NullPointerException:

FragmentManager fm = getActivity().getSupportFragmentManager();

这是因为 getActivity() 方法返回的可能是 null,所以在使用前需要进行非空判断。但这并不是最优的解决方案。

最优解决方案

在 Fragment 中获取 FragmentManager 应该使用 getChildFragmentManager() 方法,而不是 getActivity().getSupportFragmentManager() 方法。因为 getChildFragmentManager() 方法返回的 FragmentManager 只管理该 Fragment 内部的子 Fragment,更加安全可靠。

FragmentManager fm = getChildFragmentManager();
注意事项
  • 在 Fragment 中使用 getActivity() 方法时,需要进行非空判断
  • 若需要在 Activity 中管理 Fragment,可使用 getSupportFragmentManager() 方法获取 FragmentManager
  • 在 Fragment 中使用 getChildFragmentManager() 方法可获取到该 Fragment 内部的子 Fragment

以上是关于如何解决 FragmentManager fm = getActivity().getSupportFragmentManager() 的介绍,希望能对你有所帮助。