Ich habe die Dokumentation und einige andere Fragen zu diesem Thema gelesen und fühle mich nicht wirklich überzeugt. Ich sehe nicht klar die Grenzen der Verwendung dieser Technik.
Fragmente werden jetzt als Best Practice angesehen . Jede Aktivität sollte im Grunde genommen eine Unterstützung für ein oder mehrere Fragmente sein und kein Layout direkt aufrufen.
Fragmente werden erstellt, um:
Erlaube dem
Activity
, viele Fragmente zu verwenden, zwischen ihnen zu wechseln, diese Einheiten wiederzuverwenden ... ==> dasFragment
ist völlig abhängig von derContext
Aktivität. Wenn ich also etwas generisches brauche, das ich in vielen Aktivitäten wiederverwenden und handhaben kann, kann ich das erstelle meine eigenen Layouts oder Ansichten ... Diese zusätzliche Komplexität entwickelnde Ebene, die Fragmente hinzufügen würden, interessiert mich nicht.Besseres Handling bei unterschiedlicher Auflösung ==> Für Tablets / Telefone in Ordnung, wenn bei Tablets zwei (oder mehr) Fragmente in derselben Aktivität und bei Telefonen eins nach dem anderen angezeigt werden. Aber warum sollte ich immer Fragmente verwenden ?
Behandlung von Rückrufen zum Navigieren zwischen Fragmenten (dh wenn der Benutzer angemeldet ist, zeige ich ein Fragment, ansonsten zeige ich ein anderes Fragment). ===> Versuche einfach zu sehen, wie viele Fehler Facebook SDK Log-in deswegen haben, um zu verstehen, dass es wirklich (?) Ist ...
wenn man bedenkt, dass eine Android-Anwendung auf Aktivitäten basiert ... Das Hinzufügen weiterer Lebenszyklen in der Aktivität wäre besser, um eine Anwendung zu entwerfen ... Ich meine, die Module, die Szenarien, das Datenmanagement und die Konnektivität wären besser gestaltet Weg. ===> Dies ist eine Antwort von jemandem, der das Android SDK und Android Framework mit einer Fragment-Vision gesehen hat. Ich glaube nicht, dass es falsch ist, aber ich bin nicht sicher, ob es gute Ergebnisse bringen wird ... Und es ist wirklich abstrakt ...
====> Warum sollte ich mein Leben komplizieren, mehr programmieren und sie immer benutzen? Ansonsten, warum ist es eine bewährte Methode, wenn es nur ein Werkzeug für einige Fälle ist? Was sind diese Fälle?
quelle
Antworten:
Fragment ist ein modularer Abschnitt einer Aktivität, der einen eigenen Lebenszyklus hat und eigene Eingabeereignisse empfängt, die Sie hinzufügen oder entfernen können, während die Aktivität ausgeführt wird (eine Art "Unteraktivität", die Sie in verschiedenen Aktivitäten wiederverwenden können).
Abgesehen von dem offensichtlichen Vorteil der Verwendung von Fragmenten und der Benutzeroberflächenoptimierung auf verschiedenen Bildschirmen können Sie die Hintergrundverarbeitung der Aktivität ohne sichtbare Benutzeroberflächenkomponente verwalten.
Jetzt...
Obwohl empfohlen, ist dies nicht erforderlich, es sei denn, Sie möchten den Lebenszyklus einzelner Elemente steuern und / oder den Stapelstatus oder den Verlauf früherer Ansichten wiederverwenden.
quelle
Wenn es einen "Gateway" -Anwendungsfall für Fragmentskeptiker gibt, handelt es sich wahrscheinlich um Dialoge. Die Lang veralteten Methoden
showDialog(...)
,onCreateDialog(...)
etc., waren schön, dass der Rahmen automatisch nennen würde zerstören und Ihre Dialoge neu erstellen , wenn die Hosting - Aktivität wurde zerstört und neu erstellt. Wenn Sie Ihre eigenen Dialoge direkt erstellen, müssen Sie all diese Dinge selbst verwalten. Wenn Sie jedoch a verwendenDialogFragment
, können Sie diese erneut vom Framework für Sie verwalten lassen. In diesem Fall können Fragmente Ihre Codierung erheblich vereinfachen .quelle
Ich habe diese Frage vor mehr als einem Jahr gestellt.
Ich benutze jeden Tag Fragmente und würde es empfehlen.
Zuallererst möchte ich sagen, dass die Verwendung von Fragmenten nur eine Option ist und es ein Reflex ist, sie zu berücksichtigen, sobald Sie sie verwenden.
Vorteile:
1 / es hilft, den Code so zu modularisieren, dass Sie einen vollständigen Ablauf in einer Aktivität in getrennten Fragmenten haben können. Beispiel: + Liste / Raster & Detail, + Login & Registrierung & Passwort vergessen, + etc. Dies ist fantastisch, um einen wiederverwendbaren Code zu erhalten, den Sie jederzeit in verschiedenen Projekten kopieren und einfügen können.
2 / Sie haben einen neuen Lebenszyklus voller Probleme, aber auch mit Vorteilen. Beispiel: Das beibehaltene Instanzfragment ist fantastisch, weil es das Problem der Ausrichtung löst.
3 / Sie können den Fluss Ihrer Fragmente nach Ereignissen und Zuhörern aus der Aktivität verwalten.
4 / Ein Stapel Ihrer Fragmente in Ihrer Aktivität.
5 / Verwenden Sie in vielen Bildschirmen dieselbe Aktionsleiste.
Und viele andere...
Ich verwende die Aktivität manchmal immer noch als einzigen Container, insbesondere für die Kameratasche. Einige Android-APIs und Bibliotheken von Drittanbietern sind nicht einfach in Fragmenten zu implementieren.
Nun, es ist wie jedes Werkzeug, man muss es in Betracht ziehen und selbst beurteilen, ob es besser ist, es in dem einen oder anderen Fall zu verwenden.
Ich hoffe das kann helfen !!!
quelle