我遇到了Loader的问题。
我有一个Activity,从本地数据库检索记录并显示列表。当Activity启动时,通过LoaderManager.initLoader()方法自动加载记录。
还有可能通过ActionBarSherlock中的刷新按钮手动刷新列表。但是,在完成添加记录到数据库的另一个活动后,onLoadFinished不会被调用。
我正在使用SimpleCursorLoader,以下是活动中的代码片段:
@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) {
}
问题在于完成另一个活动后,将调用onLoaderCreate
,但不会调用onLoaderFinished
。经过一些调试,我发现
SimpleCursorAdapter.deliverResults()
也被调用了,但最终停留在.. if (isReset()) { ..
。我错过了什么吗?如何强制重新加载数据?
提前感谢。