getLoaderManager()
来自 android.support.v4.app.Fragment
和 getSupportLoaderManager()
来自 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/