Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android

Android od podstaw: aktywności i fragmenty

by
Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called Android From Scratch.
Android From Scratch: Understanding Views And View Groups
Android From Scratch: Connecting Activities and Applications

Polish (Polski) translation by Mateusz Kurlit (you can also view the original English article)

Kiedy użytkownik korzysta z aplikacji na urządzeniu z Androidem, prawie zawsze robi to za pomocą Activity, pojedynczego ekranu urządzenia. Po tym jak Google wydał Androida w wersji Honeycomb, do systemu operacyjnego zostały dodane obiekty Fragment, aby umożliwić łatwiejsze wykorzystanie kodu i zmianę zawartości na ekranie bez potrzeby budowania nowej Activity za każdym razem.

W tym poradniku dowiesz się więcej o obiektach Activity i Fragment w systemie Android, ich cyklach życia oraz kiedy i jak powinno się ich używać w aplikacjach.

1. Aktywności

Aktywności są kluczową częścią ekosystemu Android i jednym z pierwszych pojęć, które trzeba pojąć w miarę zapoznawania się z rozwojem Androida. Aktywności działają jak pojedynczy ekran, który jest wyświetlony użytkownikowi i często wypełniony wieloma elementami programu.

Kiedy utworzysz klasę Activity, ręcznie lub poprzez szablony Android Studio, musisz określić ją w pliku AndroidManifest.xml, jeśli jeszcze nie została dodana:

W powyższym fragmencie, zwróć uwagę na tag intent-filter z elementem action i category. Chociaż omówienie tych elementów wychodzi poza zakres tego poradnika, powinieneś wiedzieć, że te dodatkowe wiersze przekazują systemowi, którą Activity otworzyć najpierw, gdy użytkownik uruchomi aplikację.

Po utworzeniu Activity, prawdopodobnie chcesz powiązać ją z plikiem XML układu, aby można było łatwo użyć obiektów widoku z układu. Możesz wykonać to za pomocą metody onCreate().

Po wezwaniu setContentView(), możesz rozpocząć odwoływanie obiektów View z pliku XML układu.

Cykl życia aktywności

W tym momencie, prawdopodobnie zastanawiasz się czym jest onCreate() i dlaczego z niej korzystamy. Metoda onCreate() jest jedną z metod powiązanych z cyklem życia Activity. Zostaje wezwana, gdy Activity jest tworzona po raz pierwszy. To tutaj możesz wykonać kilka ogólnych kroków inicjujących w obrębie swojej Activity, ponieważ z pewnością zostanie ona wezwana na początku cyklu życia Activity jak widać poniżej.

Android Activity Life Cycle Diagram
Źródło: strona dewelopera Google

Powyższy schemat pokazuje kolejność metod wzywanych, gdy Activity opuszcza lub wchodzi w różne możliwe stany:

  • onCreate() jest wzywany bezpośrednio po utworzeniu Activity jak sama nazwa wskazuje. onDestroy() odnosi się do odwrotnej operacji i jest wzywana podczas usuwania Activity z pamięci urządzenia. Istnieje kilka przypadków, gdzie onDestroy() nie może być wezwana, ale te wychodzą poza zakres tego poradnika.
  • onStart() jest wzywana, gdy Activity jest widoczna dla użytkownika, a onStop() jest wzywana, kiedy Activity nie jest już widoczna. Obie mogą być wezwane, gdy aplikacja zostanie umieszczona w tle za pomocą przycisku home i kiedy aplikacja zostanie przywrócona na pierwszy plan.
  • onResume() i onPause() są powiązane z Activity będącą na pierwszym planie. Jeśli inny komponent taki jak komunikat lub inna Activity wejdzie na pierwszy plan, ten fragment cyklu zostanie wezwany.

Zrozumienie tego, kiedy każda z tych metod jest wzywana, zaoszczędzi ci wiele bólów głowy podczas tworzenia i potrzeby burzenia/relokacji zasobów w aplikacji.

Radzenie sobie ze zmianami w konfiguracji

Po zapoznaniu się z cyklem życia Activity, nadszedł czas, aby dowiedzieć się co się stanie, gdy Activity jest niszczone i  tworzone ponownie przez system. To może się zdarzyć w kilku sytuacjach, najczęściej, gdy ekran jest obracany.

Activity przechodzi przez standardowy proces burzenia onStop()onPause()onDestroy(), a następnie onCreate(), gdy nowy przykład Activity jest tworzony.

Inną metodą niepokazaną na powyższym diagramie jest onSaveInstanceState(). Ta metoda jest wzywana, gdy Activity jest niszczone i pozwala na zapisanie prostych informacji w obrębie pakietu. Kiedy onCreate() jest wzywane ponownie, możesz wypakować informacje, które zapisałeś wcześniej. To samo można wykonać metodą onRestoreInstanceState().

2. Fragmenty

Wprowadzone w Android 3.0 (Honeycomb), obiekty Fragment są świetnym narzędziem, które przydaje się w wielu problematycznych sytuacjach, w których tylko klasy Activity były dostępne. Fragmenty pozwalają na organizowanie komponentów interfejsu projektu dla różnych urządzeń, dając możliwość wyświetlania wielu segmentów interfejsu na dużym ekranie, np. na tablecie lub wyświetlać jeden i połączyć wszystkie ze sobą na mniejszym ekranie.

Pomagają również podzielić kod na łatwe do zarządzania kawałki, bez potrzeby polegania na dużych i skomplikowanych klasach Activity. Jedną z ostatnich i prawdopodobnie najbardziej wartościową funkcją jest to, że fragmenty pozwalają na łatwe poruszanie się w aplikacji i umożliwiają proste komunikowanie się między różnymi sekcjami aplikacji.

Cykl życia

Tak jak klasa Activity, klasa Fragment posiada własny cykl życia, który zarządza Fragment od czasu przyłączenia do Activity, aż do jego zniszczenia. Zrozumienie tego cyklu życia pomoże ci stworzyć aplikacje, które są stabilne i wolne od błędów.

Android Fragment Life Cycle Diagram
Źródło: strona dewelopera Google
  • onAttach() i onDetach() sygnalizuje, kiedy fragment został dodany do Activity i nadaje się do użytku w aplikacji.
  • onCreate() jest wzywana jako inicjująca metoda dla klas Fragment, a onDestroy() jest odpowiednikiem metody odwrotnej.
  • onCreateView() jest metodą, w której tworzysz układ i obiekty View dla fragmentu. onDestroyView() jest wzywana, kiedy hierarchia widoku powiązana z fragmentem jest usuwana.
  • onStart() i onStop() działają podobnie do odpowiedników cyklu życia ich Activity.  Te metody są włączane, kiedy Fragment odpowiednio staje się lub przestaje być widoczny. 
  • onPause() i onStart() są również podobne do odpowiedników Activity. Kiedy Fragment jest widoczny, ale jego koncentracja się zmieniła, wywołuje się jedną z tych dwóch metod.

Podklasy fragmentów

Chociaż klasa Fragment jest przydatna na swój sposób, nie może osiągnąć pełnego potencjału bez rozszerzenia w celu spełnienia celu aplikacji. Na szczęście, Google dostarczyło wiele różnych podrzędnych klas Fragment, aby pomóc deweloperom szybko zbudować świetne aplikacji.

W tej sekcji, chcę wyróżnić niektóre z nich, aby zmotywować cię do zbudowania własnych klas Fragment. Warto zwrócić uwagę, że wymienione fragmenty są dla ciebie dostępne, więc nie odkrywasz koła na nowo.

ListFragment

Ten Fragment posiada wbudowany ListView i kilka pomocniczych metod, takich jak nieokreślony ProgressBar (okrągły, kręcący się widżet wczytywania) i TextView do wyświetlania tekstu, kiedy List jest pusty.

MapFragment

Ten bezcenny Fragment, który owija MapView w celu zastosowania z usługą Mapy Google. Zamiast konieczności napisania własnego kodu, możesz rozszerzyć ten Fragment, aby uzyskać podstawową funkcjonalność mapy w swojej aplikacji.

BrowseFragment i DetailsFragment

Obie te klasy Fragment są dostępne jako część bibliotek wsparcia Leanback dla Android TV i obsługują interfejs użytkownika i podstawową funkcjonalność przy tworzeniu aplikacji dla telewizorów.

Podsumowanie

Chociaż ten poradnik ledwie poruszył kwestie działania klas Activity i Fragment, powinieneś teraz wiedzieć, że są one kluczowymi komponentami przy budowaniu interfejsu użytkownika twojej aplikacji. Poznałeś cykl życia aktywności i fragmentów, przejrzałeś kilka przydatnych podklas Fragment, które mogą pomóc zbudować wspaniałe aplikacji.

Kontynuując pracę z systemem Android, dowiesz się o wielu innych klasach Activity i Fragment, które są dostępne dla ciebie oraz bez wątpienia zbudujesz własne.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.