2013-03-10 16 views
77

Ich bin neu in Android. Ich möchte eine App mit Tab-Format erstellen. Ich habe viele Dokumente gefunden, in denen Activity verwendet wurde. Auch in vielen Fällen haben FragmentActivity verwendet. Ich bin mir nicht sicher, welcher Anfang besser ist. Bitte schlagen Sie mir vor, sollte ich Activity oder FragmentActivity verwenden, um die Entwicklung im Tab-Format zu starten?Android - Aktivität vs FragmentActivity?

Antwort

108

ianhanniballake hat Recht. Sie können alle Funktionen von Activity von FragmentActivity erhalten. In der Tat, FragmentActivity has more functionality).

Mit FragmentActivity können Sie problemlos tab and swap formatieren. Für jede Registerkarte können Sie verschiedene (Fragments sind wiederverwendbar) verwenden. Also für alle FragmentActivity können Sie die gleiche Fragment wiederverwenden.

Immer noch können Sie Activity für einzelne Seiten wie etwas auflisten und bearbeiten Element der Liste auf der nächsten Seite.

Denken Sie auch daran, Activity zu verwenden, wenn Sie android.app.Fragment verwenden; Verwenden Sie FragmentActivity, wenn Sie android.support.v4.app.Fragment verwenden. Schließen Sie niemals eine android.support.v4.app.Fragment an eine android.app.Activity an, da dies eine Ausnahme auslöst.

+0

FYI, ich habe hier einige gute Diskussionen über Fragment Android in einer anderen Sprache gefunden [Fragment trong Android] (http://www.umbalaaz.com/threads/cach-su-dung-fragment-trong-android).336 /) – UmbalaAZ

+0

ABER siehe @ ianhanniballake's Antwort: * es sei denn, Targeting-APIs sind älter als API 11 *, Sie können 'Activity' anstelle von' FragmentActivity' verwenden und haben immer noch Zugriff auf Fragmente; * diese * Antwort sagt das nicht ganz (obwohl der letzte Absatz das impliziert). – ToolmakerSteve

+0

Wie wir wissen, haben wir meistens eine BaseActivity in unserem Projekt, und alle anderen Aktivitäten werden es erweitern. Aber wenn wir zu FragmentActivity kommen, können wir es nicht tun. Daher verwende ich FragmentAktivität auch im Falle von Tab nicht. –

3

Wenn Sie den Eclipse-Assistenten "Neues Android-Projekt" in einem aktuellen ADT-Paket verwenden, werden automatisch Registerkarten als Fragmente implementiert. Dies macht die Umstellung Ihrer Anwendung auf das Tablet-Format in Zukunft wesentlich einfacher.

Für einfache Einzelbildschirm-Layouts können Sie immer noch Activity verwenden.

51

FragmentActivity gibt Ihnen die gesamte Funktionalität von Activity sowie die Fähigkeit Fragments die in vielen Fällen sehr nützlich sind, zu verwenden, insbesondere wenn sie mit dem ActionBar arbeiten, die der beste Weg ist, Tabs in Android zu verwenden.

Wenn Sie nur Targeting Honeycomb (v11) oder mehr Geräte sind, dann können Sie Activity verwenden und die nativen Fragmente in v11 eingeführt, ohne Frage. FragmentActivity wurde speziell als Teil der Support Library gebaut, um einige dieser nützlichen Features (wie zB Fragmente) zurück auf ältere Geräte zu portieren.

Ich sollte auch beachten, dass Sie wahrscheinlich die Backward Compatibility - Implementing Tabs Ausbildung sehr hilfreich für die Zukunft finden.

+3

@ A - C - Ich habe meine Antwort bearbeitet - Sie haben Recht, dass API 11+ Geräte native Fragmente und die normale Aktivitätsklasse verwenden können. – ianhanniballake

+0

Ich werde die Behauptung herausfordern, dass die normale Aktivitätsklasse als Fragment in API11 + verwendet werden kann. Dies scheint sich in KitKat geändert zu haben. Siehe https://android.googlesource.com/platform/frameworks/base.git/+/kitkat-mr1-release/core/java/android/app/Fragment.java#584 – cmarcelk

+1

@cmarcelk - nicht sicher, was "normal" Die Aktivitätsklasse kann als Fragment verwendet werden. Das bedeutet, dass "android.app.Activity" mit "android.app.Fragment" funktioniert, und nicht, dass sie austauschbar sind. – ianhanniballake

Verwandte Themen