Android - onLoadFinished nicht genannt
Ich bin vor ein Problem mit der Loader.
Habe ich eine Tätigkeit, die zeigt Liste der abgerufenen Datensätze aus der lokalen DB. Wenn die Aktivität beginnt, die Datensätze werden automatisch geladen, über LoaderManager.initLoader () - Methode.
Es besteht auch die Möglichkeit zur manuellen Aktualisierung der Liste über die Schaltfläche "aktualisieren" in ActionBarSherlock. Doch nach Abschluss einer anderen Aktivität, die fügt einen Datensatz zu DB, onLoadFinished ist nicht genannt.
Ich bin mit SimpleCursorLoader und hier ist das code-snippet aus der Tätigkeit:
@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) {
}
Das Problem ist, dass nach Beendigung der anderen Tätigkeit, onLoaderCreate
genannt wird, aber onLoaderFinished
ist nicht genannt.
nach einigem Debuggen habe ich herausgefunden, dass SimpleCursorAdapter.deliverResults()
auch nennt, bud landet auf .. if (isReset()) { ..
Bin ich etwas fehlt? Wie zu zwingen, das laden von Daten?
Danke im Voraus
InformationsquelleAutor petlack | 2013-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich habe ich die Lösung für dieses problem durch die Diskussion über
https://groups.google.com/forum/#!Thema/android-Entwickler/DbKL6PVyhLI
Darüber, wie der support library 28 stellen Sie sicher, dass Sie nicht nennen initLoader innerhalb
Fragment.onCreate()
. Wie die aktualisierte Dokumentation Staatensehen https://developer.android.com/guide/components/loaders
Funktioniert bei mir nicht!
Fast die richtige Lösung: wie bereits erwähnt, groups.google.com/forum/#!Thema/android-Entwickler/DbKL6PVyhLI (und ich experimentierte), wird der reset-Zustand ist !loader.isReset() , d.h., " sollten Sie nur starten Sie den loader, wenn der Lader wird NICHT zurückgesetzt.' (geschrieben von Etienne). Bitte aktualisieren Sie Ihre Antwort.
InformationsquelleAutor RaB
RaB-Lösung nicht funktionieren für mich
Meine Lösung gearbeitet, wurde immer zerstören Loader vor dem starten
Danke. Schließlich fand ich eine warum-force loader immer anrufen onLoadFinished Methode.
InformationsquelleAutor maros136
Zusätzlich zu RaB beantworten, wenn Sie eine benutzerdefinierte
Loader
stellen Sie sicher, dass, wenn Sie anrufensuper
wenn Sie überschreibendeliverResult()
:InformationsquelleAutor Neoh
fwiw, ich hatte ein ähnliches problem, Versuch sofort starten Sie den loader ein zweites mal, bevor die ersten onLoadFinished genannt wurde, was weder genannt zu werden.
dieser arbeitete für mich:
InformationsquelleAutor Jon O.