Unterschied zwischen Aktivität und FragmentAktivität

228

Ich habe an Fragmenten gearbeitet und bin auf zwei Dinge Activitygestoßen, FragmentActivitydie mehrmals verwendet werden. Ich will wissen , dass es einen Unterschied zwischen diesen beiden, denn wenn ich geändert Activitymit FragmentActivity, es keine Auswirkungen auf die App hatte.

Anfänger
quelle

Antworten:

314

A FragmentActivityist eine Unterklasse davon Activity, die für das Android Support Package erstellt wurde .

Die FragmentActivityKlasse fügt ein paar neue Methoden hinzu, um die Kompatibilität mit älteren Android-Versionen sicherzustellen. Abgesehen davon gibt es keinen großen Unterschied zwischen den beiden. So stellen Sie sicher , dass Sie alle Anrufe ändern getLoaderManager()und getFragmentManager()zu getSupportLoaderManager()und getSupportFragmentManager()sind.

Alex Lockwood
quelle
4
Hey, ich habe die Aufrufe von getSupportLoaderManager () und getSupportFragmentManager () nicht geändert. Aber es funktioniert immer noch einwandfrei.
Rookie
31
Das macht es so gefährlich: P. FragmentActivityerbt die getLoaderManagerund getFragmentManagerMethoden von Activityund als Ergebnis wird sich der Compiler nicht beschweren. Möglicherweise importieren Sie auch die falschen LoaderManagerund FragmentManagerKlassen. Stellen Sie sicher, dass Sie diese Klassen aus dem Support Package ( android.support.v4.app) importieren , nicht aus dem Android SDK ( android.app).
Alex Lockwood
1
Können wir sagen, dass wir, wenn wir Fragmente für die Android 2.x-Version verwenden möchten, FragmentActivity nad für Versionen verwenden müssen, die Fragmente unterstützen, müssen wir Activity verwenden.
Rookie
55
Ich denke, was Sie sagen, ist richtig. Aber nur um 100% klar zu sein ... verwenden ActivitySie, wenn Sie verwenden android.app.Fragment; Verwenden FragmentActivitySie, wenn Sie verwenden android.support.v4.app.Fragment. Fügen Sie niemals ein android.support.v4.app.Fragmentan ein an android.app.Activity, da dies dazu führt, dass eine Ausnahme ausgelöst wird.
Alex Lockwood
13
Probieren Sie zuerst dieses Tutorial aus (Verwendung Fragmentsin einer Anwendung). Fahren Sie dann mit diesem Tutorial fort (wie Sie die Fragments aus dem Support-Paket verwenden). Die Dokumentation auf der Entwicklerseite ist ebenfalls lesenswert.
Alex Lockwood
4

FragmentActivityist Teil der Support-Bibliothek und Activitydie Standardklasse des Frameworks. Sie sind funktional gleichwertig.

Sie sollten immer FragmentActivityund android.support.v4.app.Fragmentanstelle der Plattform Standard Activityund android.app.FragmentKlassen verwenden. Die Verwendung der Plattformstandards bedeutet, dass Sie sich auf die Implementierung von Fragmenten verlassen, die auf dem Gerät verwendet wird, auf dem Sie ausgeführt werden. Diese sind oft mehrere Jahre alt und enthalten Fehler, die inzwischen in der Support-Bibliothek behoben wurden.

Samuel Peter
quelle
1
Hinweis: minSdkVersionder Support-Bibliothek ist 14 seit Version 26.xx
Eugen Pechanec