A Fragment
ist ein Abschnitt von a Activity
, der Folgendes hat:
- seinen eigenen Lebenszyklus
- empfängt seine eigenen Eingabeereignisse
- kann hinzugefügt oder entfernt werden, während das
Activity
läuft.
A Fragment
muss immer in ein eingebettet sein Activity
.
Fragments
sind nicht Teil der API vor HoneyComb (3.0). Wenn Sie Fragments
eine App verwenden möchten, die auf eine Plattformversion vor HoneyComb abzielt, müssen Sie das Support Package zu Ihrem Projekt hinzufügen und das verwenden FragmentActivity
, um Ihre zu speichern Fragments
. Die FragmentActivity
Klasse verfügt über eine API für den Umgang mit Fragments
, während die Activity
Klasse vor HoneyComb dies nicht tut.
Wenn Ihr Projekt nur auf HoneyComb oder eine neuere Version abzielt, sollten Sie Ihre verwenden Activity
und nicht FragmentActivity
halten Fragments
.
Ein paar Details:
Verwenden Sie android.app.Fragment
mit Activity
. Verwenden Sie android.support.v4.app.Fragment
mit FragmentActivity
. Fügen Sie das Support-Paket nicht Fragment
zu einem hinzu, Activity
da sonst eine Ausnahme ausgelöst wird.
Seien Sie vorsichtig mit: FragmentManager
und LoaderManager
haben Sie separate Support-Versionen für FragmentActivity:
Wenn Sie ein Fragment
in einem Activity
(HoneyComb und höher) verwenden, rufen Sie an
getFragmentManager()
bekommen android.app.FragmentManager
getLoaderManager()
bekommen android.app.LoaderManager
Wenn Sie a Fragment
in a FragmentActivity
(vor HoneyComb) verwenden, rufen Sie an:
getSupportFragmentManager()
zu bekommen android.support.v4.app.FragmentManager
.
getSupportLoaderManager()
bekommen android.support.v4.app.LoaderManager
so, 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()
Es ist auch nützlich zu wissen, dass ein Fragment zwar in ein eingebettet sein Activity
muss, aber nicht Teil des Activity
Layouts sein muss. Es kann als unsichtbarer Worker für die Aktivität ohne eigene Benutzeroberfläche verwendet werden.