Fragmenty
365
jesteś tutaj
Cykl życia fragmentów
Cykl życia fragmentów jest bardzo podobny do cyklu życia aktywności, choć zawiera
kilka dodatkowych etapów. Wynika to z faktu, że fragment musi prowadzić interakcję
z aktywnością, w której jest umieszczony. Poniżej przedstawiliśmy metody tworzące
cykl życia fragmentu i ich relacje z poszczególnymi stanami aktywności.
onAttach()
onDetach()
onCreate()
onDestroy()
onCreateView()
onDestroyView()
Aktywność utworzona
Aktywność wznowiona
Aktywność
uruchomiona
Aktywność zatrzymana
Aktywność wstrzymana
Aktywność usunięta
onActivityCreated()
onStart()
onResume()
onPause()
onStop()
Stany aktywności Metody zwrotne fragmentów
onAttach(Activity)
Ta metoda jest wywoływana, kiedy fragment jest kojarzony
z kontekstem, czyli, w naszym przykładzie, z aktywnością.
onCreate(Bundle)
Ta metoda jest bardzo podobna do metody
onCreate()
aktywności.
Można jej używać do przeprowadzania wstępnej inicjalizacji fragmentu.
onCreateView(LayoutInater, ViewGroup, Bundle)
Na tym etapie działania fragmenty używają obiektu
LayoutInflater
do utworzenia swojego widoku.
onActivityCreated(Bundle)
Ta metoda jest wywoływana po zakończeniu wywołania
metody
onCreate()
aktywności.
onStart()
Ta metoda jest wywoływana bezpośrednio przed
wyświetleniem fragmentu.
onResume()
Ta metoda jest wywoływana, kiedy fragment jest widoczny
i aktywnie działa.
onPause()
Ta metoda jest wywoływana, kiedy fragment jest widoczny,
lecz nie prowadzi już interakcji z użytkownikiem.
onStop()
Ta metoda jest wywoływana, kiedy fragment przestaje być
widoczny dla użytkownika.
onDestroyView()
Ta metoda zapewnia fragmentowi możliwość usunięcia
wszystkich zasobów, które mogą być skojarzone z jego
widokiem.
onDestroy()
W tej metodzie fragment może zwolnić wszystkie inne
używane zasoby.
onDetach()
Ta metoda jest wywoływana, gdy fragment ostatecznie traci
kontakt ze swoją aktywnością.
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów
366
Rozdział 9.
Klasa Fragment
Fragmenty dziedziczą metody cyklu życia
Jak już się przekonałeś, nasz fragment dziedziczy po systemowej klasie
Fragment
.
Ta klasa zapewnia mu dostęp do metod cyklu życia fragmentu. Poniższy diagram
przedstawia hierarchię klas fragmentów.
TwojFragment
onCreateView(LayoutInflater,
ViewGroup, Bundle)
twojaMetoda()
Fragment
onAttach(Activity)
onCreate(Bundle)
onCreateView(LayoutInflater,
ViewGroup, Bundle)
onActivityCreated(Bundle)
onStart()
onResume()
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
getView()
Object
Klasa Fragment
(android.app.Fragment)
Klasa
Fragment
implementuje domyślne wersje
metod cyklu życia fragmentu. Definiuje także
inne metody, których fragment może potrzebować,
takie jak
getView()
.
Klasa TwojFragment
(com.hfad.foo)
Przeważająca większość zachowania fragmentu jest
implementowana przez metody klasy bazowej. Nam pozostaje
przesłonięcie wyłącznie tych metod, których potrzebujemy.
Klasa Object
(java.lang.Object)
Choć fragmenty mają całkiem sporo wspólnego z aktywnościami, to jednak klasa
Fragment
nie dziedziczy po klasie
Activity
. Oznacza to, że niektóre spośród metod
dostępnych w aktywnościach nie będą dostępne we fragmentach.
Zwróć uwagę, że klasa
Fragment
nie dziedziczy po klasie
Context
. W odróżnieniu
od aktywności fragmenty nie są jednym z typów kontekstu, a co za tym idzie, nie mają
bezpośredniego dostępu do globalnych informacji o środowisku aplikacji. Zamiast tego
muszą one uzyskiwać dostęp do tych informacji, używając kontekstu innych obiektów,
takich jak aktywność, w której dany fragment jest umieszczony.
Skoro już lepiej rozumiesz cykl życia fragmentów, wróćmy do naszego fragmentu
WorkoutDetailFragment
oraz zadania aktualizacji jego widoków.
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.