Warum sollten Sie Android-Fragmente verwenden?

15

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:

  1. Erlaube dem Activity, viele Fragmente zu verwenden, zwischen ihnen zu wechseln, diese Einheiten wiederzuverwenden ... ==> das Fragmentist völlig abhängig von der ContextAktivitä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.

  2. 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 ?

  3. 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 ...

  4. 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?

ahmed_khan_89
quelle
1
Es ist unklar, was Sie fragen. Können Sie bitte die Frage zusammenfassen, möglicherweise unter der Aufzählung der vermeintlichen Vorteile und Ihrer jeweiligen Kritik?
Logc
Ich habe eine detaillierte Frage hinzugefügt.
ahmed_khan_89
Ich bin wie @logc verloren. Wie würden Sie mit diesen Fällen ohne Fragmente umgehen?
Neontapir
Ich habe angegeben, was ich ohne Fragmente tun würde: (1) benutzerdefinierte generische Steuerelemente erstellen und sie wieder verwenden, wo ich will (2) mit 2 Aktivitäten und mit startActivityForResult navigieren oder einfach zwischen Ansichten wechseln (ein- / ausblenden, aufblasen / entfernen ...) ohne so viel zu codieren ... (3) können Sie einen Rückruf auch in Aktivitäten mit Ansichten verwenden. (4) Es ist eine abstrakte Antwort, die ich immer bekomme, wenn ich über dieses Thema diskutiere ... das mehr Erläuterungen benötigt ...
ahmed_khan_89
1
Hmm. Diese Frage & Antwort zeigt die Einschränkung des Stackexchange-Designs, bei dem das Originalposter die "beste" Antwort auswählt. (Im Gegensatz zu slant.co, wo alle abstimmen.) Nicht ideal für eine breite Frage wie diese. Hier erhält eine vage Frage eine akzeptierte Antwort, die offensichtlich mit dem übereinstimmt, was der Fragesteller hören wollte. Wenn Sie in Ihrer Situation keinen Grund sehen, Fragment zu verwenden , tun Sie dies nicht. Eine bessere Frage wäre, nach dem Für und Wider von Fragment vs. Aktivität zu fragen . Und genau zu diesem Thema gibt es viele Themen.
ToolmakerSteve

Antworten:

5

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...

====> Warum sollte ich mein Leben komplizieren und mehr programmieren ... ??

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.

Zeus
quelle
5

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 verwenden DialogFragment, können Sie diese erneut vom Framework für Sie verwalten lassen. In diesem Fall können Fragmente Ihre Codierung erheblich vereinfachen .

Kevin Krumwiede
quelle
1

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 !!!

ahmed_khan_89
quelle