gpt4 book ai didi

Android Fragment - 使用 Activity 的 loadermanager 而不是 Fragment 的。可以吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:40 24 4
gpt4 key购买 nike

给定一个使用加载程序从数据库加载(大量)数据的 fragment 。

问题:

我有一个寻呼机适配器,它会在用户离开持有它的选项卡时销毁该 fragment ,并在用户返回该选项卡时重新创建它。由于这种重新创建,每次都会创建一个新的加载程序,并且每次都会加载数据。

问题:

为避免每次创建 fragment 时都重新创建加载程序,是否可以在 onActivityCreated 方法中使用 fragment ?

我已经尝试过,测试过,似乎工作正常。但我不认为这是正确的。

最佳答案

实际上,检查源代码,您最终会做同样的事情。

Fragment.getLoaderManager:

/**
* Return the LoaderManager for this fragment, creating it if needed.
*/
public LoaderManager getLoaderManager() {
if (mLoaderManager != null) {
return mLoaderManager;
}
if (mActivity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}


mCheckedForLoaderManager = true;
mLoaderManager = mActivity.getLoaderManager(mWho, mLoadersStarted, true);
return mLoaderManager;
}

mWho 基本上是 fragment ID。

final void setIndex(int index, Fragment parent) {
mIndex = index;
if (parent != null) {
mWho = parent.mWho + ":" + mIndex;
} else {
mWho = "android:fragment:" + mIndex;
}
}

Activity.getLoaderManager() 的区别在于谁将成为(root)

因此,即使您可以按照要求执行操作,直接从 Fragment 调用它可能是更好的方法

免责声明:我只检查了最新版本的源代码,但我不希望它有很大的不同

关于Android Fragment - 使用 Activity 的 loadermanager 而不是 Fragment 的。可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com