it-swarm.com.de

Fragment oder Support-Fragment?

Ich entwickle eine App, die Android> = 4.0. Es verwendet Fragmente aus dem Android.app Paket. Da ich Probleme mit der älteren Fragmentimplementierung in 4.0 habe, wie z. B. diese , die bereits in der Unterstützungsbibliothek behoben sind, erwäge ich, von der Unterstützungsbibliothek zur Fragmentimplementierung zurückzukehren, um mehr zu erhalten zuverlässige und konsequente Umsetzung.

Wie ist Ihre Meinung dazu? Verwenden Sie bei der Entwicklung für Android 4) Fragmente aus der Support-Bibliothek, obwohl diese bereits verfügbar sind?

125
brillenheini

Aus meiner Erfahrung ist es ein großer Vorteil, auf allen Android Geräten dieselbe Fragmentimplementierung zu verwenden. Ich konnte nicht alle NullPointerExceptions entfernen, wenn der Status auf Android) gespeichert wurde 4.0 mit nativen Fragmenten, mit der Support-Bibliothek sind sie alle weg. Auch konnte ich bisher keinen Nachteil mit diesem Ansatz sehen.

Meine Antwort auf meine Frage lautet nun: Wenn ich für Android 4.x entwickle, ist es eine gute Idee, die Fragmente aus der Unterstützungsbibliothek zu verwenden. In der Unterstützungsbibliothek wurden noch vorhandene Fehler behoben ältere Fragmentimplementierungen und wird häufig mit weiteren Fehlerkorrekturen aktualisiert.

90
brillenheini

Ein wichtiger Grund, eine Weile bei SupportFragment zu bleiben, ist, dass Sie bis zur API 17 keinen Zugriff auf ChildFragmentManager haben. Die Support-Bibliothek wird Ihnen eine Support-Version des Child-Fragment-Managers zur Verfügung stellen.

Dies wird eine große Sache, wenn Sie Fragmente haben, die andere Fragmente enthalten. Dies ist häufig bei Tablet-Anwendungen mit viel Komplexität der Fall, und/oder Ihre Gesamtarchitektur basiert entweder auf einem Layout mit Registerkarten oder verwendet die Navigationsleiste.

40
Ross Hambrick

Ich war auch frustriert, die Support-Bibliotheken trotz Targeting Android 4.0+) einbinden zu müssen - aber es scheint, dass es offiziell empfohlen wird:

Das Android Support Library-Paket enthält mehrere Bibliotheken, die in Ihre Anwendung aufgenommen werden können. Jede dieser Bibliotheken unterstützt eine Reihe von Android Plattformversionen und eine Reihe von Funktionen .

In diesem Handbuch werden die wichtigen Funktionen und die Versionsunterstützung erläutert, die von den Support-Bibliotheken bereitgestellt werden, damit Sie entscheiden können, welche davon in Ihre Anwendung aufgenommen werden sollen. Im Allgemeinen empfehlen wir, die v4-Unterstützung und die v7-Anwendungskompatibilitätsbibliotheken einzuschließen, da sie eine breite Palette von Android) -Versionen unterstützen und APIs für empfohlene Benutzeroberflächenmuster bereitstellen.

http://developer.Android.com/tools/support-library/features.html

21
sourabhj

IMHO, wenn Sie planen, nur für 4.0 zu entwickeln, würde ich empfehlen, mit den nativen Bibliotheken zu arbeiten, da die ausführbare Datei kleiner wird. Es ist wahr, dass Sie in früheren Versionen möglicherweise auf Probleme mit Fehlern stoßen, aber ich denke, die meisten davon sollten ziemlich trivial sein, um sie zu umgehen. Außerdem soll die Kompatibilitätsbibliothek den nativen Fragmenten zugeordnet werden, falls Sie ohnehin mit 4.0 oder höher arbeiten. So könnte es ohnehin dazu kommen, dass Sie mit solchen Problemen zu kämpfen haben. Das Problem mit den Unterstützungsbibliotheken ist, dass viele Klassen zweimal angezeigt werden (einmal in der Struktur des Unterstützungspakets und einmal in der "nativen" Paketstruktur), was die Entwicklung etwas umständlicher macht.

Wenn Sie jedoch auch Ihre App vor 4.0 veröffentlichen möchten, führt kein Weg an der Support-Bibliothek vorbei. Da ungefähr 38% aller Benutzer 2.3 verwenden, ist es möglicherweise geschäftlich sinnvoll, diese Betriebssystemversion einzuschließen. In einem solchen Fall können Sie die Support-Bibliothek in Kombination mit Jake Wartons ActionBarSherlock (oder mit der Googles-Support-ActionBar-Bibliothek, sobald diese endgültig veröffentlicht wurde) verwenden.

4
RaB

Es scheint, dass es jetzt besser ist, die Support-Bibliothek zu verwenden, da ich die Anweisung hier gesehen habe https://developer.Android.com/reference/Android/app/Fragment.html

Diese Klasse war auf API-Ebene P veraltet. Verwenden Sie das Support Library Fragment, um ein konsistentes Verhalten für alle Geräte und den Zugriff auf Lifecycle zu gewährleisten.

2
code4j