A Fragmentist 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
Activityläuft.
A Fragmentmuss immer in ein eingebettet sein Activity.
Fragmentssind nicht Teil der API vor HoneyComb (3.0). Wenn Sie Fragmentseine 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 FragmentActivityKlasse verfügt über eine API für den Umgang mit Fragments, während die ActivityKlasse vor HoneyComb dies nicht tut.
Wenn Ihr Projekt nur auf HoneyComb oder eine neuere Version abzielt, sollten Sie Ihre verwenden Activityund nicht FragmentActivityhalten Fragments.
Ein paar Details:
Verwenden Sie android.app.Fragmentmit Activity. Verwenden Sie android.support.v4.app.Fragmentmit FragmentActivity. Fügen Sie das Support-Paket nicht Fragmentzu einem hinzu, Activityda sonst eine Ausnahme ausgelöst wird.
Seien Sie vorsichtig mit: FragmentManagerund LoaderManagerhaben Sie separate Support-Versionen für FragmentActivity:
Wenn Sie ein Fragmentin einem Activity(HoneyComb und höher) verwenden, rufen Sie an
getFragmentManager() bekommen android.app.FragmentManager
getLoaderManager() bekommen android.app.LoaderManager
Wenn Sie a Fragmentin 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 Activitymuss, aber nicht Teil des ActivityLayouts sein muss. Es kann als unsichtbarer Worker für die Aktivität ohne eigene Benutzeroberfläche verwendet werden.