Moje pytanie dotyczy, poza oczywistymi różnicami dziedziczenia, jakie są główne różnice między Fragmenti FragmentActivity? Do jakich scenariuszy najlepiej pasują poszczególne zajęcia? Próbuję zrozumieć, dlaczego istnieją obie te klasy ...
Moje pytanie dotyczy, poza oczywistymi różnicami dziedziczenia, jakie są główne różnice między Fragmenti FragmentActivity? Do jakich scenariuszy najlepiej pasują poszczególne zajęcia? Próbuję zrozumieć, dlaczego istnieją obie te klasy ...
Odpowiedzi:
A Fragmentto sekcja Activity, która ma:
Activitydziałania.FragmentZawsze musi być osadzony w Activity.
Fragmentsnie są częścią API przed HoneyComb (3.0). Jeśli chcesz używać Fragmentsw aplikacji przeznaczonej dla wersji platformy wcześniejszej niż HoneyComb, musisz dodać pakiet pomocy technicznej do swojego projektu i użyć FragmentActivitydo przechowywania Fragments. FragmentActivityKlasa ma do czynienia z API Fragments, natomiast w Activityklasie, przed plastra miodu, nie.
Jeśli Twój projekt jest przeznaczony tylko dla HoneyComb lub nowszego, powinieneś używać, Activitya nie FragmentActivitytrzymać Fragments.
Trochę szczegółów:
Używaj android.app.Fragmentz Activity. Używaj android.support.v4.app.Fragmentz FragmentActivity. Nie dodawaj pakietu wsparcia Fragmentdo pliku, Activityponieważ spowoduje to zgłoszenie wyjątku.
Należy uważać: FragmentManageri LoaderManagermieć oddzielne wersje wsparcia dla FragmentActivity:
Jeśli używasz Fragmentw Activity(HoneyComb i wyżej), zadzwoń
getFragmentManager() dostać android.app.FragmentManagergetLoaderManager() dostać android.app.LoaderManagerjeśli używasz a Fragmentin a FragmentActivity(pre-HoneyComb), zadzwoń:
getSupportFragmentManager()dostać android.support.v4.app.FragmentManager.getSupportLoaderManager() dostać android.support.v4.app.LoaderManagerwięc nie rób
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
lub
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Warto również wiedzieć, że chociaż fragment musi być osadzony w Activityarkuszu, nie musi być częścią Activityukładu. Może być używany jako niewidzialny pracownik dla działania, bez własnego interfejsu użytkownika.
FragmentActivity to nasza klasyczna aktywność z obsługą fragmentów, nic więcej. Dlatego FragmentActivity jest potrzebna, gdy fragment zostanie dołączony do działania.
Well Fragment to dobry komponent, który kopiuje podstawowe zachowania Aktywności, ale nie jest samodzielnym komponentem aplikacji, takim jak Aktywność i musi być dołączony do Działania, aby działał.
Spójrz tutaj po więcej szczegółów
Pomyśl o FragmentActivity jako zwykłej klasie Activity, która może obsługiwać fragmenty. Przed wykonaniem plastra miodu klasa aktywności nie mogła bezpośrednio obsługiwać fragmentów, więc jest to potrzebne w działaniach wykorzystujących fragmenty.
Jeśli docelową dystrybucją jest Honeycomb i więcej, możesz zamiast tego przedłużyć Aktywność.
Za „działanie podrzędne” należy również uważać fragment. Nie może istnieć bez aktywności. Zawsze myśl o fragmencie jako o działaniu pobocznym i powinieneś być dobry. Tak więc aktywność byłaby rodzicielem, a fragment (-y) dziecka - rodzaj symbolicznej relacji.
FragmentActivity to działanie ad hoc, które zawiera fragment. W tych kilku słowach wyjaśniam jedną z głównych ważnych zmian, które w systemie Android 3.0 (HoneyComb) zespół Androida wprowadził do zestawu SDK systemu Android.
Dzięki tej nowej koncepcji Twoje fragmenty kodu i układ stają się bardziej elastyczne i łatwiejsze w utrzymaniu. Jeśli szukasz w Google, jest wiele przykładów.