ローダーの問題に直面しています。
ローカル DB から取得したレコードのリストを表示するアクティビティがあります。アクティビティが開始されると、レコードは LoaderManager.initLoader() メソッドによって自動的にロードされます。
ActionBarSherlock の更新ボタンを使用してリストを手動で更新することもできます。ただし、DB にレコードを追加する別のアクティビティが終了した後、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()) { ..
何か不足していますか?データのリロードを強制する方法は?
前もって感謝します