Meine Frage ist abgesehen von den offensichtlichen Vererbungsunterschieden, was sind die Hauptunterschiede zwischen Fragment
und FragmentActivity
? Für welche Szenarien ist jede Klasse am besten geeignet? Ich versuche zu verstehen, warum diese beiden Klassen existieren ...Unterschied zwischen Fragment und FragmentActivity
Antwort
A Fragment
ist ein Abschnitt eines Activity
, die aufweist:
- seine eigene Lebenszyklus
- seine eigene Eingabeereignisse empfängt
- hinzugefügt oder entfernt werden kann, während der
Activity
läuft.
Eine Fragment
muss immer in eine Activity
eingebettet werden.
Fragments
sind nicht Teil der API vor HoneyComb (3.0). Wenn Sie Fragments
in einer App verwenden möchten, die auf eine Plattformversion vor HoneyComb abzielt, müssen Sie die Support Package Ihrem Projekt hinzufügen und die FragmentActivity
verwenden, um Ihre zu halten. Die Klasse FragmentActivity
verfügt über eine API für den Umgang mit Fragments
, während die Klasse Activity
vor HoneyComb keine API enthält.
Wenn Ihr Projekt nur auf HoneyComb oder neuer abzielt, sollten Sie Activity
und nicht verwenden, um Ihre Fragments
zu halten.
Einige Details:
Verwenden android.app.Fragment
mit Activity
. Verwenden Sie android.support.v4.app.Fragment
mit FragmentActivity
. Fügen Sie das Support Package Fragment
nicht zu einem Activity
hinzu, da dies dazu führt, dass eine Ausnahme ausgelöst wird.
Eine Sache vorsichtig zu sein mit: FragmentManager
und LoaderManager
separaten Support-Versionen für FragmentActivity haben:
Wenn Sie eine Fragment
in einem Activity
(Honeycomb und höher) verwenden, rufen
getFragmentManager()
zu erhaltenandroid.app.FragmentManager
getLoaderManager()
android.app.LoaderManager
, wenn Sie ein Fragment
in einer FragmentActivity
(pre-Wabe), ruft:
getSupportFragmentManager()
android.support.v4.app.FragmentManager
zu bekommen.getSupportLoaderManager()
zu bekommenandroid.support.v4.app.LoaderManager
so, do nicht tun
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
oder
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
auch nützlich zu wissen, dass, während ein Fragment eingebettet werden muss, ein Activity
es muss nicht Teil des Activity
Layout sein. Es kann als unsichtbarer Arbeiter für die Aktivität verwendet werden, ohne eigene Benutzeroberfläche.
FragmentActivity ist unsere klassische Aktivität mit Fragment-Unterstützung, nichts mehr. Daher wird FragmentActivity benötigt, wenn ein Fragment an Activity angehängt wird.
Nun Fragment ist eine gute Komponente, die die grundlegenden Verhaltensweisen von Activity kopiert, noch keine eigenständige Anwendungskomponente wie Activity ist und an Activity angehängt werden muss, um zu funktionieren.
Blick here für mehr Details
BTW, veraltete Antwort, die nur für Anwendungen gilt, die auf älteren Geräten als API 11 arbeiten möchten. – ToolmakerSteve
@ToolmakerSteve können Sie weitere Details angeben? Wenn möglich, können Sie die Antwort mit der aktuellen Version bearbeiten? –
ein FragmentActivity ist eine Ad-hoc-Aktivität, das Fragment enthält. In diesen wenigen Worten habe ich Ihnen eine der wichtigsten wichtigen Änderungen, die mit Android 3.0 (HoneyComb), Android-Team in den Android SDK eingefügt hat.
Mit dieser neuen Art von Konzept werden Ihre Code- und Layoutelemente flexibler und wartbarer. Wenn Sie auf Google suchen, gibt es viele Beispiele.
Denken Sie an FragmentActivity als reguläre Aktivitätsklasse, die Fragmente unterstützen kann. Vor der Wabe konnte eine Aktivitätsklasse Fragmente nicht direkt bereitstellen, daher wird dies in Aktivitäten benötigt, die Fragmente verwenden.
Wenn Ihre Zielverteilung Honeycomb und darüber hinaus ist, können Sie stattdessen die Aktivität erweitern.
Auch ein Fragment ist als "Unteraktivität" zu betrachten. Es kann nicht ohne Aktivität existieren. Denken Sie immer an ein Fragment als Unteraktivität und Sie sollten gut sein. Die Aktivität wäre also das Elternteil und das Fragment die kindliche Art der symbolischen Beziehung.
- 1. Grid.Invalidate in Fragment von FragmentActivity
- 2. Gibt es einen Unterschied zwischen ui: Fragment und s: Fragment?
- 3. FragmentActivity vs Fragment mit FragmentTransaction verwalten?
- 4. FragmentActivity: Aktivitätsergebnis für unbekanntes Fragment geliefert
- 5. Disable wischen zwischen Registerkarten in FragmentActivity
- 6. Unterschied zwischen support.v7.widgets und android.widgets Toolbar, Fragment
- 7. Grundsätzlicher Unterschied zwischen add() und replace() Methode von Fragment
- 8. Unterschied zwischen startActivityForResult von Fragment und startActivityForResult von Aktivität
- 9. TabHost mit Fragmenten und FragmentActivity
- 10. übergeben Variable zwischen FragmentAktivität und sein Fragment
- 11. Unterschied zwischen ActionBarActivity und Fragmente Aktivität
- 12. Wo ist FragmentActivity # onDetachFragment?
- 13. Erhalten Sie eine Ansicht von Fragment von FragmentActivity
- 14. getSupportActionBar mit FragmentActivity
- 15. ein Bündel zu einem Fragment von einem FragmentActivity
- 16. wie zwischen Fragment und dialogFragment
- 17. Daten zwischen Aktivität und Fragment
- 18. Schnittstelle zwischen ListAdapter und Fragment
- 19. Unterschied zwischen add(), replace() und addToBackStack()
- 20. DialogFragment ohne FragmentActivity
- 21. Unterschied zwischen fragmentTransaction.hide und setVisibility (GONE);
- 22. Unterschied zwischen Vorzeichen & und *?
- 23. VBA: Unterschied zwischen & und +
- 24. Unterschied zwischen "**/* /" und "** /"?
- 25. Unterschied zwischen $ # und $ {# @}
- 26. Unterschied zwischen = und: =
- 27. Unterschied zwischen '#', '%' und '$'
- 28. MySQL: Unterschied zwischen ', `,' und '
- 29. C++ Unterschied zwischen '//' und '///'
- 30. Unterschied zwischen String.Empty und ""
Ein Fragment muss jedoch nicht Teil des Aktivitätslayouts sein. Sie können auch ein Fragment ohne eigene Benutzeroberfläche als unsichtbaren Arbeiter für die Aktivität verwenden. – uzay95
@ uzay95 danke, dass du das herausgibst. Ich habe einen Abschnitt am Ende hinzugefügt, um es zu erwähnen. –
@GunnarKarlsson Sollen wir Fragment zu FragmentActivity hinzufügen? – Dhasneem