2012-05-15 15 views

Antwort

255

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 erhalten android.app.FragmentManager
  • getLoaderManager()android.app.LoaderManager
01 zu erhalten

, wenn Sie ein Fragment in einer FragmentActivity (pre-Wabe), ruft:

  • getSupportFragmentManager()android.support.v4.app.FragmentManager zu bekommen.
  • getSupportLoaderManager() zu bekommen android.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.

+5

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

+1

@ uzay95 danke, dass du das herausgibst. Ich habe einen Abschnitt am Ende hinzugefügt, um es zu erwähnen. –

+0

@GunnarKarlsson Sollen wir Fragment zu FragmentActivity hinzufügen? – Dhasneem

14

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

+1

BTW, veraltete Antwort, die nur für Anwendungen gilt, die auf älteren Geräten als API 11 arbeiten möchten. – ToolmakerSteve

+0

@ToolmakerSteve können Sie weitere Details angeben? Wenn möglich, können Sie die Antwort mit der aktuellen Version bearbeiten? –

1

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.

8

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.

Verwandte Themen