跳到主要内容

getFragmentManager,getSupportFragmentManager,getChildFragmentManager之间 的区别?

参考答案:

getFragmentManagergetSupportFragmentManagergetChildFragmentManager 都是 Android 中用于获取 FragmentManager 的方法,但它们各自有不同的用途和上下文。

  1. getFragmentManager()

    • 这是 Activity 类的一个方法,用于获取与活动关联的 FragmentManager
    • 这个 FragmentManager 主要用于处理那些继承自 Fragment 的对象,而不是 FragmentCompatFragmentActivity
    • 在使用 Fragment 而不是 FragmentCompat 的情况下,您可能会使用这个方法。
  2. getSupportFragmentManager()

    • 这是 FragmentActivity 类的一个方法,通常用于获取与活动关联的 SupportFragmentManager
    • SupportFragmentManagerFragmentManager 的一个子类,提供了对 FragmentFragmentCompat 的支持,允许您在更广泛的 Android 版本上使用这些特性。
    • 当您的活动继承自 AppCompatActivity 或其他基于 FragmentActivity 的类时,您应该使用这个方法。
  3. getChildFragmentManager()

    • 这是一个 Fragment 的方法,用于获取与该 Fragment 关联的 FragmentManager
    • 这个 FragmentManager 专门用于管理该 Fragment 的子 Fragment
    • 当您需要在 Fragment 内部添加、删除或替换其他 Fragment 时,您应该使用这个方法。

总结

  • getFragmentManager()getSupportFragmentManager() 主要用于活动(Activity)级别,分别用于处理传统的 Fragment 和兼容性的 Fragment
  • getChildFragmentManager() 用于 Fragment 级别,用于管理该 Fragment 的子 Fragment

选择正确的方法取决于您的具体需求和上下文。如果您正在编写一个活动并需要处理 Fragment,您应该根据活动是否继承自 FragmentActivity(或其子类,如 AppCompatActivity)来选择 getFragmentManager()getSupportFragmentManager()。如果您在一个 Fragment 内部并需要管理其子 Fragment,那么您应该使用 getChildFragmentManager()