gpt4 book ai didi

Android - 未调用 onLoadFinished

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

我遇到了加载程序的问题。

我有一个 Activity ,它显示从本地数据库检索到的记录列表。当 Activity 开始时,记录会通过 LoaderManager.initLoader() 方法自动加载。

也可以通过 ActionBarSherlock 中的刷新按钮手动刷新列表。但是,在完成另一个向数据库添加记录的 Activity 后,不会调用 onLoadFinished。

我正在使用 SimpleCursorLoader这是 Activity 中的代码 fragment :

@Override
public void onStart() {
...
getSupportLoaderManager().initLoader(0, null, this);
}

@Override
public void onPause() {
...
getSupportLoaderManager().destroyLoader(0);
}

public void refreshRecords() {
getSupportLoaderManager().restartLoader(0, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int id, final Bundle args) {
Loader<Cursor> l = new SimpleCursorLoader(this) {
@Override
public Cursor loadInBackground() {
return recordDAO.getCursor();
}
};
l.forceLoad();
return l;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
// updateUI
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
}

问题是在完成其他 Activity 后,调用了 onLoaderCreate,但未调用 onLoaderFinished

经过一些调试,我发现 SimpleCursorAdapter.deliverResults() 也被调用,bud 结束于 .. if (isReset()) { ..

我错过了什么吗?如何强制重新加载数据?

提前致谢

最佳答案

感谢大家的讨论,我终于找到了解决这个问题的方法

https://groups.google.com/forum/#!topic/android-developers/DbKL6PVyhLI

public static <T> void initLoader(final int loaderId, final Bundle args, final LoaderCallbacks<T> callbacks,
final LoaderManager loaderManager) {
final Loader<T> loader = loaderManager.getLoader(loaderId);
if (loader != null && loader.isReset()) {
loaderManager.restartLoader(loaderId, args, callbacks);
} else {
loaderManager.initLoader(loaderId, args, callbacks);
}
}

此外,从支持库 28 开始,请确保不要从 Fragment.onCreate() 中调用 initLoader。正如更新后的文档所述

You typically initialize a Loader within the activity's onCreate() method, or within the fragment's onActivityCreated() method.

参见 https://developer.android.com/guide/components/loaders

关于Android - 未调用 onLoadFinished,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014992/

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