In der Entwicklerdokumentation für Fragmente von Google wird Folgendes erwähnt:
Um die Fragment UI-Komponenten wiederzuverwenden, sollten Sie jede als eine vollständig eigenständige modulare Komponente erstellen, die ihr eigenes Layout und Verhalten definiert. Nachdem Sie diese wiederverwendbaren Fragmente definiert haben, können Sie sie einer Aktivität zuordnen und sie mit der Anwendungslogik verbinden, um die gesamte zusammengesetzte Benutzeroberfläche zu erstellen.
Was wirklich gut klingt. Sie gehen jedoch nicht viel detaillierter als:
Die gesamte Kommunikation von Fragment zu Fragment erfolgt über die zugehörige Aktivität. Zwei Fragmente sollten niemals direkt kommunizieren.
Gibt es irgendwelche Dinge, die ich in meinen Fragmenten mit / calling / doing vermeiden sollte?
Ich nehme an, dass die Verwendung von Singleton die Wiederverwendbarkeit durch Einführung externer Abhängigkeiten / Erwartungen unterbricht?
Ist es in Ordnung, Log.*
, SharedPreferences
, Toast
und AlertDialog
innerhalb von Fragment
aufzurufen, oder sollten Sie das vermeiden?
Ist es in Ordnung, getActionBar()
aufzurufen, oder wäre es töricht anzunehmen, dass das Hosting Activity
ein ActionBar
hat?
Wenn die Fragment
etwas an den Benutzer ausgeben muss, sei es ein Fehler oder was auch immer, sollte es die Entscheidung treffen, wie es ausgegeben wird (Log, Toast, AlertDialog, etc) oder sollte es die Zeichenfolge an a senden Callback und lassen Sie die Hosting-Aktivität entscheiden, wie / was sie tun soll?
A ListFragment
muss mit Daten gefüllt werden, die dem Benutzer angezeigt werden. Sollte es die Daten selbst holen (über eine Netzwerkanfrage in einer AsyncTask
inneren Klasse), oder sollte es das Hosting Activity
anfordern, um die Daten dafür zu holen?
Das ist eine sehr gute Frage. Aber wie Sie in Ihrer Frage erwähnt haben, gibt die offizielle Dokumentation an, dass Fragmente nicht direkt miteinander kommunizieren sollen.
Abhängig von Ihrer Implementierung möchten Sie jetzt möglicherweise komplexe Methoden und Funktionen durch Rückrufe der zugehörigen Aktivität ausführen. Vor allem, wenn es sich um eine Funktionalität handelt, die mehreren Fragmenten gemeinsam ist.
Was die einfachen Dinge anbelangt, wie das Aufrufen von Log. *, SharedPreferences, Toast und AlertDialog finde ich, dass es sehr gut funktioniert, wenn du es in deinem Fragment getan hast. Sie möchten keine hohe Kopplung zwischen Ihren Klassen haben.
Ein Fragment sollte auch in der Lage sein, Daten zu holen und etwas für den Benutzer selbst auszugeben, aber wiederum hängt es sehr von Ihrer Implementierung und dem Grad der Komplexität ab, mit der Sie es zu tun haben.
Ich würde vorschlagen, mit gutem Beispiel zu lernen. Besonders Formbeispiele aus der offiziellen Android-Dokumentation. Sie sollten es richtig machen:)
BEARBEITEN
Stellen Sie sicher, dass Sie beim Navigieren durch Fragmente immer Rückrufe verwenden. Wenn Sie beispielsweise ein Listenelement aus einem Fragment auswählen und die Details in einem anderen Element anzeigen möchten.
Der folgende Code stammt aus der offiziellen Dokumentation von Ссылка
%Vor%Fragmente können auch direkt zwischen ihnen kommunizieren, aber die obige Lösung ist eleganter und leichter zu pflegen.
Tags und Links android android-fragments