2013-03-10 32 views
77

Jestem nowy w systemie Android. Chcę zbudować aplikację z formatem kart. Znalazłem wiele dokumentacji, gdzie użyto Activity. Również w wielu przypadkach używano FragmentActivity. Nie jestem pewien, który z nich lepiej będzie zacząć. Proszę zasugerować, czy powinienem użyć Activity lub FragmentActivity, aby rozpocząć projektowanie w formacie tabulatora?Android - Aktywność kontra FragmentActivity?

Odpowiedz

108

ianhanniballake ma rację. Możesz uzyskać pełną funkcjonalność Activity z FragmentActivity. W rzeczywistości FragmentActivity has more functionality).

Za pomocą FragmentActivity można łatwo zbudować format tab and swap. Dla każdej karty można użyć różnych Fragment (Fragments). Tak więc dla każdego FragmentActivity można ponownie użyć tego samego Fragment.

Nadal można użyć Activity dla pojedynczych stron, takich jak lista coś i edytować element listy na następnej stronie.

Pamiętaj również, aby używać Activity, jeśli używasz android.app.Fragment; użyj FragmentActivity, jeśli używasz android.support.v4.app.Fragment. Nigdy nie podłączaj android.support.v4.app.Fragment do android.app.Activity, ponieważ spowoduje to zgłoszenie wyjątku.

+0

FYI, znalazłem kilka dobrych dyskusji na temat Fragmentu Androida w innym języku tutaj [Fragment trong Android] (http://www.umbalaaz.com/threads/cach-su-dung-fragment-trong-android.336 /) – UmbalaAZ

+0

ALE zobacz odpowiedź @ ianhanniballake: * chyba że starszy interfejs API jest starszy niż 11 *, możesz użyć 'Activity' zamiast' FragmentActivity' i nadal mieć dostęp do Fragments; * ta * odpowiedź nie dość tego mówi (chociaż ostatni akapit implikuje to). – ToolmakerSteve

+0

Jak wiemy, głównie mamy BaseActivity w naszym projekcie, a wszystkie inne działania go rozszerzają. Ale jeśli chodzi o FragmentActivity, nie możemy tego zrobić. Więc nie używam FragmentActivity nawet w przypadku tab. –

3

Jeśli używasz kreatora Eclipse "Nowy projekt Android" w ostatnim pakiecie ADT, automatycznie otrzymasz zakładki zaimplementowane jako Fragmenty. To sprawia, że ​​konwersja aplikacji na format tabletu jest znacznie łatwiejsza w przyszłości.

Aby uzyskać prosty układ jednego ekranu, możesz nadal używać Activity.

51

FragmentActivity daje wszystkich funkcjonalności Activity plus umiejętność posługiwania Fragments które są bardzo przydatne w wielu przypadkach, szczególnie przy pracy z ActionBar, co jest najlepszym sposobem, aby użyć karty w Androidzie.

Jeśli jesteś tylko kierowania na urządzenia Honeycomb (v11) lub większe, możesz użyć Activity i użyć natywnych fragmentów wprowadzonych w v11 bez problemu. FragmentActivity został zbudowany specjalnie jako część Support Library w celu przywrócenia niektórych użytecznych funkcji (takich jak Fragmenty) do starszych urządzeń.

Należy również zauważyć, że prawdopodobnie szkolenie Backward Compatibility - Implementing Tabs będzie bardzo pomocne w przyszłości.

+3

@ A - C - Edytowałem swoją odpowiedź - masz rację, że urządzenia z API 11+ mogą korzystać z natywnych fragmentów i normalnej klasy aktywności. – ianhanniballake

+0

Zamierzam zakwestionować twierdzenie, że normalna klasa aktywności może być używana jako fragment w API11 +. Wygląda na to, że zmieniło się w KitKat. Zobacz https://android.googlesource.com/platform/frameworks/base.git/+/kitkat-mr1-release/core/java/android/app/Fragment.java#584 – cmarcelk

+1

@cmarcelk - nie wiem, co "normalne Klasa aktywności może być używana jako Fragment "oznacza - powiedziałem, że' android.app.Activity' działa z 'Android.app.Fragment', a nic o nich nie jest wymienne. – ianhanniballake

Powiązane problemy