In Android API 11+ hat Google eine neue Klasse namens veröffentlicht Fragment
.
In den Videos schlägt Google vor, wann immer möglich ( Link1 , Link2 ) Fragmente anstelle von Aktivitäten zu verwenden, aber sie haben nicht genau erklärt, warum.
Was ist der Zweck von Fragmenten und einige mögliche Verwendungen davon (abgesehen von einigen UI-Beispielen, die leicht durch einfache Ansichten / Layouts erreicht werden können)?
Meine Frage betrifft Fragmente:
- Was sind die Zwecke der Verwendung eines Fragments?
- Was sind die Vor- und Nachteile der Verwendung von Fragmenten im Vergleich zur Verwendung von Aktivitäten / Ansichten / Layouts?
Bonusfragen:
- Können Sie einige wirklich interessante Verwendungszwecke für Fragmente angeben? Dinge, die Google in seinen Videos nicht erwähnt hat?
- Was ist der beste Weg, um zwischen Fragmenten und den Aktivitäten, die sie enthalten, zu kommunizieren?
- Was sind die wichtigsten Dinge, an die Sie denken sollten, wenn Sie Fragmente verwenden? Irgendwelche Tipps und Warnungen aus Ihrer Erfahrung?
android
android-layout
android-fragments
android-activity
android-3.0-honeycomb
Android-Entwickler
quelle
quelle
Antworten:
Fragmente sind die Lösung von Android zur Erstellung wiederverwendbarer Benutzeroberflächen. Sie können einige der gleichen Dinge mithilfe von Aktivitäten und Layouts erreichen (z. B. mithilfe von Includes). Jedoch; Fragmente werden von HoneyComb und höher mit der Android-API verbunden. Lassen Sie mich näher darauf eingehen.
Die
ActionBar
. Wenn Sie möchten, dass Registerkarten dort oben in Ihrer App navigieren, sehen Sie schnell, dass dieActionBar.TabListener
Benutzeroberfläche IhnenFragmentTransaction
ein Eingabeargument für dieonTabSelected
Methode gibt. Sie könnten dies wahrscheinlich ignorieren und etwas anderes und cleveres tun, aber Sie würden gegen die API arbeiten, nicht damit.Die
FragmentManager
Griffe «zurück» für Sie auf sehr clevere Weise. Zurück bedeutet nicht zurück zur letzten Aktivität, wie bei regulären Aktivitäten. Es bedeutet zurück zum vorherigen Fragmentzustand.Sie können das Cool
ViewPager
mit einem verwendenFragmentPagerAdapter
, um Swipe-Schnittstellen zu erstellen. DerFragmentPagerAdapter
Code ist viel sauberer als ein normaler Adapter und steuert die Instanziierung der einzelnen Fragmente.Ihr Leben wird viel einfacher, wenn Sie Fragmente verwenden, wenn Sie versuchen, Anwendungen für Telefone und Tablets zu erstellen. Da die Fragmente so stark mit den Honeycomb + -APIs verknüpft sind, sollten Sie sie auch auf Telefonen verwenden, um Code wiederzuverwenden. Hier bietet sich die Kompatibilitätsbibliothek an.
Sie könnten und sollten sogar Fragmente für Apps verwenden, die nur für Telefone bestimmt sind. Wenn Sie Portabilität im Auge haben. Ich verwende
ActionBarSherlock
und die Kompatibilitätsbibliotheken, um "ICS-aussehende" Apps zu erstellen, die bis zur Version 1.6 gleich aussehen. Sie erhalten die neuesten Funktionen wie dieActionBar
mit Registerkarten, Überlauf, geteilter Aktionsleiste, Viewpager usw.Der beste Weg, um zwischen Fragmenten zu kommunizieren, sind Absichten. Wenn Sie etwas in einem Fragment drücken, rufen Sie normalerweise
StartActivity()
mit Daten darauf auf. Die Absicht wird an alle Fragmente der von Ihnen gestarteten Aktivität weitergegeben.quelle
Sie sind sich nicht sicher, auf welche Videos Sie sich beziehen, aber ich bezweifle, dass Sie Fragmente anstelle von Aktivitäten verwenden sollten, da diese nicht direkt austauschbar sind. Es gibt tatsächlich einen ziemlich detaillierten Eintrag im Dev Guide. Lesen Sie ihn für Details.
Kurz gesagt, Fragmente leben in Aktivitäten, und jede Aktivität kann viele Fragmente enthalten. Wie Aktivitäten haben sie einen bestimmten Lebenszyklus, im Gegensatz zu Aktivitäten sind sie keine Anwendungskomponenten der obersten Ebene. Zu den Vorteilen von Fragmenten gehören die Wiederverwendung von Code und die Modularität (z. B. die Verwendung derselben Listenansicht in vielen Aktivitäten), einschließlich der Möglichkeit, Schnittstellen mit mehreren Fenstern zu erstellen (meistens nützlich auf Tablets). Der Hauptnachteil ist (einige) zusätzliche Komplexität. Im Allgemeinen können Sie dasselbe mit (benutzerdefinierten) Ansichten auf nicht standardmäßige und weniger robuste Weise erreichen.
quelle
Ein Fragment ist ein Teil der Benutzeroberfläche oder des Verhaltens einer Anwendung, der in eine Aktivität eingefügt werden kann, um ein modulareres Aktivitätsdesign zu ermöglichen. Es wird nicht falsch sein, wenn wir sagen, dass ein Fragment eine Art Subaktivität ist.
Es folgen wichtige Punkte zu einem Fragment:
Ein Fragment hat ein eigenes Layout und ein eigenes Verhalten mit eigenen Rückrufen für den Lebenszyklus.
Sie können Fragmente in einer Aktivität hinzufügen oder entfernen, während die Aktivität ausgeführt wird.
Sie können mehrere Fragmente in einer einzigen Aktivität kombinieren, um eine Benutzeroberfläche mit mehreren Fenstern zu erstellen.
Ein Fragment kann in mehreren Aktivitäten verwendet werden.
Der Fragmentlebenszyklus hängt eng mit dem Lebenszyklus seiner Wirtsaktivität zusammen.
Wenn die Aktivität angehalten wird, werden auch alle in der Aktivität verfügbaren Fragmente gestoppt.
Ein Fragment kann ein Verhalten implementieren, das keine Benutzeroberflächenkomponente enthält.
Fragmente wurden der Android-API in Android 3 (Honeycomb) mit API-Version 11 hinzugefügt .
Weitere Informationen finden Sie auf der offiziellen Website Fragmente .
quelle
Dies sind wichtige Informationen, die ich auf Fragmenten gefunden habe:
Quelle: https://www.pluralsight.com/blog/software-development/android-fragments
quelle
Aktivitäten sind die Vollbildkomponenten in der App mit der Symbolleiste, alles andere sind vorzugsweise Fragmente. Eine übergeordnete Vollbildaktivität mit einer Symbolleiste kann mehrere Bereiche, scrollbare Seiten, Dialogfelder usw. (alle Fragmente) enthalten, auf die alle vom übergeordneten Element aus zugegriffen werden können und über das übergeordnete Element kommunizieren.
Beispiel:
Aktivität A, Aktivität B, Aktivität C:
vs.
Aktivität A, Fragment 1, Fragment 2, Fragment 3:
quelle
Fragmente sind in einigen Fällen von besonderem Nutzen, beispielsweise wenn wir auf allen unseren Seiten eine Navigationsleiste behalten möchten. Sie können ein Rahmenlayout mit einem beliebigen Fragment aufblasen und haben dennoch Zugriff auf die Navigationsschublade.
Wenn Sie eine Aktivität verwendet hätten, müssten Sie die Schublade in allen Aktivitäten behalten, was zu redundantem Code führt. Dies ist eine interessante Verwendung eines Fragments.
Ich bin neu in Android und denke immer noch, dass ein Fragment auf diese Weise hilfreich ist.
quelle
Ich weiß, dass dies bereits zu Tode diskutiert wurde, aber ich möchte noch einige Punkte hinzufügen:
Frags können zum Auffüllen von
Menu
s verwendet werden und könnenMenuItem
Klicks selbst verarbeiten. So erhalten Sie weitere Modulationsoptionen für Ihre Aktivitäten. Sie können ContextualActionBar-Inhalte usw. ausführen, ohne dass Ihre Aktivität davon Kenntnis hat, und sie im Grunde genommen von den grundlegenden Aufgaben Ihrer Aktivität (Navigation / Einstellungen / Info) entkoppeln.Ein übergeordnetes Frag mit untergeordneten Frags kann Ihnen weitere Optionen zum Modulieren Ihrer Komponenten bieten. Sie können beispielsweise Frags einfach austauschen, neue Frags in einen Pager einfügen oder sie entfernen und neu anordnen. Alles ohne dass Ihre Aktivität etwas darüber weiß und sich nur auf die übergeordneten Dinge konzentriert.
quelle
Fragmente leben innerhalb der Aktivität und haben:
Stellen Sie sich Fragmente als eine Unteraktivität der Hauptaktivität vor, zu der sie gehört, sie kann nicht für sich existieren und sie kann immer wieder aufgerufen / wiederverwendet werden. Hoffe das hilft :)
quelle
1.Zwecke zur Verwendung eines Fragments?
quelle
Ein Fragment lebt in einer Aktivität, während eine Aktivität für sich lebt.
quelle