Różnica między aktywnością a aktywnością fragmentu

228

Pracowałem na fragmenty i natknąłem się na dwóch rzeczach Activityi FragmentActivityktóre są wykorzystywane wielokrotnie. Chcę wiedzieć, że jest jakaś różnica między tymi dwoma, bo kiedy zmienił Activitysię FragmentActivity, to nie miało wpływu na aplikacji.

Rekrut
źródło

Odpowiedzi:

316

A FragmentActivityjest podklasą, Activityktóra została zbudowana dla pakietu wsparcia Androida .

FragmentActivityKlasa dodaje kilka nowych metod w celu zapewnienia zgodności ze starszymi wersjami Androida, ale poza tym, tak naprawdę nie ma wielkiej różnicy między nimi. Tylko pamiętaj, aby zmienić wszystkie połączenia getLoaderManager()i getFragmentManager()na getSupportLoaderManager()i getSupportFragmentManager()odpowiednio.

Alex Lockwood
źródło
4
Hej, nie zmieniłem wywołań funkcji getSupportLoaderManager () i getSupportFragmentManager () .. ale nadal działa dobrze.
Świeżak
31
Właśnie dlatego jest tak niebezpieczny: P. FragmentActivitydziedziczy getLoaderManageri getFragmentManagermetody z Activityi w wyniku kompilator nie będzie narzekać. Możliwe, że importujesz również niepoprawne LoaderManageri FragmentManagerklasy. Upewnij się, że importujesz te klasy z pakietu wsparcia ( android.support.v4.app), a nie zestawu SDK systemu Android ( android.app).
Alex Lockwood
1
Czy możemy powiedzieć, że jeśli chcemy używać fragmentów dla wersji Android 2.x, musimy użyć FragmentActivity i dla wersji, która obsługuje fragmenty, musimy użyć Activity.
Świeżak
55
Myślę, że to, co mówisz, jest poprawne. Ale żeby być w 100% jasne ... użyj, Activityjeśli używasz android.app.Fragment; użyj, FragmentActivityjeśli używasz android.support.v4.app.Fragment. Nigdy nie dołączaj a android.support.v4.app.Fragmentdo android.app.Activity, ponieważ spowoduje to zgłoszenie wyjątku.
Alex Lockwood
13
Najpierw spróbuj tego samouczka (jak korzystać Fragmentsz aplikacji). Następnie przejdź do tego samouczka (jak korzystać ze Fragments z pakietu wsparcia). Dokumentacja na stronie deweloperów jest warta czytania, jak również.
Alex Lockwood,
4

FragmentActivityjest częścią biblioteki wsparcia , podczas gdy Activityjest domyślną klasą frameworka. Są funkcjonalnie równoważne.

Zawsze powinieneś używać FragmentActivityi android.support.v4.app.Fragmentzamiast domyślnych ustawień platformy Activityi android.app.Fragmentklas. Korzystanie z domyślnych ustawień platformy oznacza, że ​​polegasz na jakiejkolwiek implementacji fragmentów użytej w urządzeniu, na którym pracujesz. Często mają one wiele lat i zawierają błędy, które zostały naprawione w bibliotece wsparcia.

Samuel Peter
źródło
1
Uwaga: minSdkVersionbiblioteki wsparcia jest 14 od wersji 26.xx
Eugen Pechanec