Fragments

In Android 3.0 wurden Fragmente eingeführt, die zeigen, wie sich flexiblere Entwürfe für die vielen verschiedenen Bildschirmgrößen von Smartphones und Tablets unterstützen lassen. In diesem Artikel wird beschrieben, wie Sie Fragmente verwenden, um Xamarin.Android-Anwendungen zu entwickeln, und wie Sie Fragmente auf Geräten mit Versionen vor Android 3.0 (API-Ebene 11) unterstützen.

Übersicht über Fragmente

Die größeren Bildschirme der meisten Tablets haben die Entwicklung für Android schwieriger gemacht: Ein Layout, das für kleine Bildschirme entworfen wurde, funktioniert nicht notwendigerweise auch auf größeren Bildschirmen und umgekehrt. Um die dadurch entstandene Komplexität bei der Entwicklung zu mindern, wurden in Android 3.0 zwei neue Features eingeführt: Fragmente (Fragments) und Unterstützungspakete (Support Packages).

Sie können sich Fragmente als Module der Benutzeroberfläche vorstellen. Sie ermöglichen es dem Entwickler, die Benutzeroberfläche in isolierte, wiederverwendbare Abschnitte zu unterteilen, die in separaten Aktivitäten ausgeführt werden können. Zur Laufzeit entscheiden die Aktivitäten selbst, welche Fragmente verwendet werden sollen.

Unterstützungspakete wurden ursprünglich als Compatibility Libraries (Kompatibilitätsbibliotheken) bezeichnet und ermöglichen die Verwendung von Fragmenten auf Geräten, auf denen Android-Versionen vor Android 3.0 (API-Ebene 11) ausgeführt wird.

Die folgende Abbildung veranschaulicht, wie eine einzelne Anwendung Fragmente in verschiedenen Geräteformfaktoren verwendet.

Diagram of how fragments are used in Tablets and Handsets

Fragment A enthält eine Liste, und Fragment B enthält Details zu einem in dieser Liste ausgewählten Element. Wenn die Anwendung auf einem Tablet ausgeführt wird, können beide Fragmente in derselben Aktivität angezeigt werden. Wenn dieselbe Anwendung auf einem Smartphone mit einem kleineren Bildschirm ausgeführt wird, werden die Fragmente in zwei separaten Aktivitäten gehostet. Fragment A und Fragment B sind in beiden Formfaktoren gleich, aber die Aktivitäten, die diese hosten, unterscheiden sich voneinander.

Damit eine Aktivität all diese Fragmente koordinieren und verwalten kann, wurde in Android eine neue Klasse namens FragmentManager eingeführt. Jede Aktivität verfügt über eine eigene Instanz von FragmentManager, um gehostete Fragmente hinzuzufügen, zu löschen und zu finden. Das folgende Diagramm veranschaulicht die Beziehung zwischen Fragmenten und Aktivitäten:

Diagram illustrating relationships between Activity, Fragment Manager, and Fragments

In verschiedener Hinsicht können Fragmente als zusammengesetzte Steuerelemente oder Miniaktivitäten betrachtet werden. Sie bündeln Teile der Benutzeroberfläche in wiederverwendbare Module, die dann unabhängig von Entwicklern in Aktivitäten verwendet werden können. Ein Fragment verfügt genau wie eine Aktivität über eine Ansichtshierarchie, kann aber im Gegensatz zu einer Aktivität in verschiedenen Bildschirmen verwendet werden. Ansichten unterscheiden sich von Fragmenten insofern, als Fragmente einen eigenen Lebenszyklus aufweisen, was für Ansichten nicht gilt.

Eine Aktivität kann zwar ein oder mehrere Fragmente hosten, hat aber keine direkte Kenntnis der Fragmente selbst. Ebenso haben Fragmente keine direkte Kenntnis von anderen Fragmenten in der Hostaktivität. Fragmente und Aktivitäten haben jedoch Kenntnis vom FragmentManager in ihrer Aktivität. Durch Verwendung von FragmentManager kann eine Aktivität oder ein Fragment einen Verweis auf eine bestimmte Instanz eines Fragments abrufen und dann in dieser Instanz Methoden aufrufen. Auf diese Weise können Aktivitäten und Fragmente mit anderen Fragmenten kommunizieren und interagieren.

Dieser Leitfaden bietet umfassende Informationen zur Verwendung von Fragmenten, u. a. folgende:

  • Erstellen von Fragmenten: Informationen zum Erstellen eines grundlegenden Fragments und zu den wichtigsten Methoden, die implementiert werden müssen.
  • Fragmentverwaltung und Transaktionen: Informationen zum Ändern von Fragmenten zur Laufzeit.
  • Android-Unterstützungspaket: Informationen zu den Bibliotheken, die eine Verwendung von Fragmenten in älteren Android-Versionen ermöglichen.

Anforderungen

Fragmente sind ab API-Ebene 11 (Android 3.0) im Android SDK verfügbar, wie im folgenden Screenshot gezeigt:

Selecting the API level in the Android SDK Manager

Fragmente sind in Xamarin.Android 4.0 und höher verfügbar. Eine Xamarin.Android-Anwendung muss mindestens für die API-Ebene 11 (Android 3.0) konzipiert sein, um Fragmente verwenden zu können. Das Zielframework kann in den Projekteigenschaften festgelegt werden, wie im Folgenden gezeigt:

Setting the Target Framework API level in the Project Options

Mithilfe des Android-Unterstützungspakets und Xamarin.Android 4.2 oder höher ist es möglich, Fragmente in älteren Android-Versionen zu verwenden. Details dazu finden Sie in den Dokumenten dieses Abschnitts.