Ich lese etwas mit AsyncTaskLoader, damit ich die Kontaktliste mit dieser Technik laden kann. Der Code funktioniert nur, wenn ich Callbacks von einer Klasse implementiere, die Fragment
wie in MyLoader extends Fragment implements LoaderCallbacks<ArrayList<Contact>>
erweitert. Gibt es eine andere Art und Weise? Alles, was ich wirklich brauche, ist die Kontaktliste (Name, Telefon, Thumbnail), die ich an mein Backend senden kann. Wenn ich zum Beispiel versuche, Context
zu verwenden, da ich das aus jeder Aktivität herausholen kann, indem ich einfach (Context)this
mache, kann der Code nicht einmal kompiliert werden. Mit Kontext meine ich
Übrigens: Ich verwende mehrere Referenzen. Einer ist Ссылка .
FRAGE (noch einmal): Kann ich AsyncTaskLoader ohne Fragment oder FragmentActivity verwenden?
DER CODE, DER MIT DEM FRAGMENT FUNKTIONIERT:
%Vor%MANIFEST:
%Vor% AsyncTaskLoader hat nichts damit zu tun, ob Sie Fragment
oder Activity
verwenden.
Um Ihnen ein Beispiel zu geben, betrachten Sie eine Listenaktivität:
%Vor%Offensichtlich müssen Sie einen entsprechenden Adapter für die Listenansicht und das Layout erstellen, aber das Beispiel zeigt Ihnen nur, wie ein einfacher Lader für den Cursor für eine Aktivität funktioniert.
Stellen Sie außerdem sicher, dass alle Ihre Importe konsistent sind, entweder mit der support.v4
-Bibliothek oder der regulären Bibliothek:
Eine weitere Frage, die gestellt wird, ist, dass wenn die LoaderCallback
-Schnittstelle standalone verwendet werden kann. Dies wird nicht empfohlen, wenn Sie berücksichtigen, dass LoaderCallback
für.
Die Schnittstelle LoaderManager.LoaderCallbacks<D>
ist ein einfacher Vertrag, mit dem der LoaderManager Daten an den Client zurückmeldet. Was das bedeutet, ist seine einzige Aufgabe, einige Daten in den Hintergrund zu laden, der von einem Client angefordert wird, was effektiv eine Aktivität ist.
Wenn Sie eine eigenständige Klasse erstellen, können Sie die Klassendefinition erweitern, um LoaderManager.LoaderCallbacks<D>
zu implementieren, aber Sie müssen die geladenen Daten über eine Art Mechanismus an die ursprüngliche Aktivität zurückmelden, was eine einfache Aufgabe verkomplizieren würde / p>
Wenn Sie jetzt wirklich darauf festgelegt sind, könnten Sie Ihre eigenständige Klasse wie folgt erstellen:
%Vor% In Ihrer onLoadFinished
-Methode müssen Sie die geladene Cursor
entweder über einen Broadcast oder eine Art Nachrichtenbus zurücksenden:
LocalBroadcastManager
Messenger
Nachdem Sie diese Informationen an MainActivity
gesendet haben, können Sie sie in den Adapter laden und so fortsetzen, wie sie sind.
Tags und Links android asynctaskloader android-contacts