Sono di fronte a un problema con Loader.Android - onLoadFinished non chiamato
Ho un'attività, che visualizza l'elenco dei record recuperati dal DB locale. All'avvio dell'attività, i record vengono caricati automaticamente tramite il metodo LoaderManager.initLoader().
Esiste anche la possibilità di aggiornare manualmente l'elenco tramite il pulsante di aggiornamento in ActionBarSherlock. Tuttavia, dopo aver terminato un'altra attività che aggiunge un record al DB, onLoadFinished non viene chiamato.
Sto usando SimpleCursorLoader e qui è frammento di codice dalla attività:
@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) {
}
Il problema è che dopo aver terminato l'altra attività, onLoaderCreate
si chiama, ma onLoaderFinished
non viene chiamato.
dopo un po 'di debug, ho trovato che SimpleCursorAdapter.deliverResults()
si chiama anche, gemma finisce sul .. if (isReset()) { ..
Mi sto perdendo qualcosa? Come forzare il ricaricamento dei dati?
Grazie in anticipo
Lavori per me. Grazie. –
Non funziona per me! – Radu
Quasi la soluzione corretta: come menzionato su https://groups.google.com/forum/#!topic/android-developers/DbKL6PVyhLI (e l'ho sperimentato), la condizione di reset è! Loader.isReset(), cioè, 'Dovresti riavviare il caricatore solo se il caricatore NON è resettato.' (scritto da Etienne). Si prega di aggiornare la risposta. – Pascal