861 Stimmen

Dilemma: wann Fragmente vs. Aktivitäten verwenden:

Ich weiß, dass Aktivitäten dazu dienen, einen einzelnen Bildschirm meiner Anwendung darzustellen, während Fragments dazu bestimmt sind, wiederverwendbare UI-Layouts mit eingebetteter Logik darin zu sein.

Bis vor Kurzem habe ich eine Anwendung entwickelt, wie es verlangt wurde. Ich habe eine Aktivität erstellt, um einen Bildschirm meiner Anwendung darzustellen, und Fragmente für ViewPager oder Google Maps verwendet. Ich habe selten einen ListFragment oder ein anderes UI erstellt, das mehrmals wiederverwendet werden kann.

Kürzlich bin ich auf ein Projekt gestoßen, das nur aus 2 Aktivitäten besteht, eine ist eine SettingsActivity und die andere ist die MainActivity. Das Layout der MainActivity ist mit vielen versteckten Fullscreen-UI-Fragmenten gefüllt und nur eines wird angezeigt. In der Logik der Aktivität gibt es viele FragmentTransitions zwischen den verschiedenen Bildschirmen der Anwendung.

Was mir an diesem Ansatz gefällt, ist, dass durch die Verwendung einer ActionBar die Anwendung intakt bleibt und sich nicht mit der Bildschirmwechsel-Animation bewegt, was beim Wechsel von Aktivitäten passiert. Dies gibt den Bildschirmübergängen eine flüssigere Wirkung.

Also frage ich eigentlich, wie Ihr derzeit bei der Entwicklung vorgeht, was dieses Thema betrifft. Ich weiß, es mag auf den ersten Blick wie eine Meinungsfrage aussehen, aber ich betrachte es als eine Frage des Android-Designs und der Architektur... nicht wirklich eine Meinungsfrage.

UPDATE (01.05.2014): Nach dieser Präsentation von Eric Burke von Square, (die ich sagen muss, ist eine großartige Präsentation mit vielen nützlichen Tools für Android-Entwickler. Und ich habe keinerlei Verbindung zu Square)

http://www.infoq.com/presentations/Android-Design/

Aus meiner persönlichen Erfahrung der letzten Monate habe ich festgestellt, dass der beste Weg, meine Anwendungen zu erstellen, darin besteht, Gruppen von Fragmenten zu erstellen, die einen Fluss in der Anwendung darstellen und all diese Fragmente in einer Aktivität darzustellen. Im Grunde genommen haben Sie dann in Ihrer Anwendung die gleiche Anzahl von Aktivitäten wie die Anzahl der Flüsse. Auf diese Weise bleibt die Action Bar auf allen Bildschirmen des Flusses intakt, wird jedoch beim Wechsel eines Flusses neu erstellt, was viel Sinn macht. Wie Eric Burke sagt und wie ich auch erkannt habe, ist die Philosophie, so wenig Aktivitäten wie möglich zu verwenden, nicht in allen Situationen anwendbar, da sie ein Durcheinander in dem darstellt, was er die "God" Aktivität nennt.

0voto

hossam rakha Punkte 163

Verwenden Sie fast immer Fragmente. Wenn Sie wissen, dass die App, die Sie erstellen, sehr klein bleibt, ist der zusätzliche Aufwand für die Verwendung von Fragmenten möglicherweise nicht gerechtfertigt, so dass sie weggelassen werden können. Für größere Apps wird die durch die Flexibilität von Fragmenten eingeführte Komplexität ausgeglichen, wodurch es einfacher wird, ihre Verwendung im Projekt zu rechtfertigen. Einige Leute lehnen die zusätzliche Komplexität, die mit Fragmenten und ihren Lebenszyklen einhergeht, stark ab und verwenden sie daher nie in ihren Projekten. Ein Problem bei diesem Ansatz ist, dass es mehrere APIs in Android gibt, die sich auf Fragmente verlassen, wie beispielsweise ViewPager und die Jetpack-Navigationsbibliothek. Wenn Sie diese Optionen in Ihrer App verwenden müssen, müssen Sie Fragmente verwenden, um deren Vorteile zu nutzen.

Auszug aus: Kristin Marsicano. "Android-Programmierung: Der umfassende Handbuch 4. Auflage." Apple Books.

0voto

m.reiter Punkte 1780

Diese Frage muss neu bewertet werden, da Jetpack Compose stabil erreicht hat.

Jetpack Compose ist das empfohlene moderne Toolkit von Android für den Aufbau von nativen Benutzeroberflächen.

von https://developer.android.com/jetpack/compose

Die typische jetpack-compose-Architektur besteht aus: Einer Aktivität, mehreren Composables und durch Jetpack-Navigation miteinander verbunden. Es gibt keine (Notwendigkeit für) Fragmente mehr.

Siehe Jetzt in Android für ein Beispiel.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X