android - v4.app.Fragment 中的 getLoaderManger() 和 getActivity().getSupportLoaderManager() 之间的区别

标签 android

getLoaderManager() 来自 android.support.v4.app.FragmentgetSupportLoaderManager() 来自 android.support.v4 .app.FragmentActivity

他们返回同样的东西吗?我在文档中找不到它。如果不是,哪个应该与 fragment 内部的支持库一起使用?

最佳答案

它们返回完全相同的东西 - android.support.v4.app.LoaderManager

来自源代码:v4.app.Fragment实际上是记忆宿主 Activity :

 public LoaderManager getLoaderManager() {
     if (mLoaderManager != null) {
         return mLoaderManager;
     }
     if (mActivity == null) {
         throw new IllegalStateException(...);
     }

     mLoaderManager = mActivity.getLoaderManager(...);
     return mLoaderManager;
 }

您的 Activity 可能正在扩展 v4.app.FragmentActivity并且您可以看到 getLoaderManager() 是一个私有(private)方法,它也被 getSupportLoaderManager() 调用:

public LoaderManager getSupportLoaderManager() {
    ...
    mLoaderManager = getLoaderManager(...);
    return mLoaderManager;
}

所以:

  • 要使用v4.app.Fragment,您需要继承v4.app.FragmentActivity(AppCompatActivity只是一个例子);
  • v4.app.Fragment.getLoaderManager()v4.app.FragmentActivity.getSupportLoaderManager() 最终都调用了完全相同的方法,v4。 app.FragmentActivity.getLoaderManager()。我很确定两者之间没有任何区别。

关于android - v4.app.Fragment 中的 getLoaderManger() 和 getActivity().getSupportLoaderManager() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088404/

相关文章:

android - FrameLayout 无法通过按键获取焦点?

安卓TCP客户端

java - 在 Android 中解析一些 HTML 代码的最佳方法

java - android中日期的小时和分钟

android:指定的 child 已经有一个 parent 。你必须调用 removeView()

android - 在 Android 上的 Kotlin 中,如何在一个或每个循环期间在不可变列表中发生空指针异常?

android - 在 Osmdroid 覆盖层上禁用 onClick 事件

android - 方向更改后 fragment 中的叠加小部件

java - 是否可以使用对象而不是类来启动 Activity?

android - 使用 Scala 插件在 Android Studio 中设置测试