Ten moduł Codelab jest częścią kursu Android Kotlin Fundamentals. Najwięcej korzyści przyniesie Ci ukończenie wszystkich ćwiczeń w kolejności. Wszystkie ćwiczenia z tego kursu znajdziesz na stronie docelowej kursu Android Kotlin Fundamentals.
Z tego ćwiczenia dowiesz się, czym są fragmenty, i utworzysz fragment w aplikacji początkowej o nazwie AndroidTrivia. W kolejnych ćwiczeniach z programowania dowiesz się więcej o nawigacji i będziesz dalej pracować nad aplikacją AndroidTrivia.
Co warto wiedzieć
- Podstawy języka Kotlin
- Jak tworzyć podstawowe aplikacje na Androida w Kotlinie
- Jak pracować z układami
Czego się nauczysz
- Jak statycznie dodać fragment do aplikacji
Jakie zadania wykonasz
- Utwórz fragment w aktywności.
W 3 modułach, z których składa się ta lekcja, będziesz pracować nad aplikacją AndroidTrivia. Gotowa aplikacja to gra, w której użytkownik odpowiada na 3 pytania dotyczące programowania na Androida. Jeśli użytkownik odpowie poprawnie na wszystkie 3 pytania, wygrywa i może udostępnić swoje wyniki.
Aplikacja AndroidTrivia ilustruje wzorce i elementy sterujące nawigacji. Aplikacja ma kilka komponentów:
- Na ekranie tytułowym, widocznym po lewej stronie na powyższym zrzucie ekranu, użytkownik rozpoczyna grę.
- Na ekranie gry z pytaniami, widocznym na środku u góry, użytkownik gra i przesyła odpowiedzi.
- Menu nawigacyjne, widoczne po prawej stronie powyżej, wysuwa się z boku aplikacji i zawiera menu z nagłówkiem. Ikona panelu
otwiera panel nawigacji. Menu w panelu nawigacyjnym zawiera link do strony „O grze” i link do zasad gry.
U góry aplikacji znajduje się kolorowy widok zwany paskiem aplikacji, który jest też znany jako pasek działań.
W tym ćwiczeniu będziesz pracować z aplikacją początkową, która zawiera kod szablonu i klasy fragmentów potrzebne do ukończenia aplikacji Trivia.
- Pobierz projekt Android Studio AndroidTrivia-Starter.
- Otwórz projekt w Android Studio i uruchom aplikację. Po otwarciu aplikacja nie robi nic poza wyświetlaniem swojej nazwy i pustego ekranu.
- W panelu Projekt w Android Studio otwórz widok Projekt: Android, aby przejrzeć pliki projektu. Otwórz folder app > java, aby wyświetlić klasę
MainActivity
i klasy fragmentów.
- Otwórz folder res > layout i dwukrotnie kliknij activity_main.xml. Plik
activity_main.xml
pojawi się w edytorze układu. - Kliknij kartę Projekt. Drzewo komponentów pliku
activity_main.xml
pokazuje układ główny jako pionowyLinearLayout
.
W liniowym układzie pionowym wszystkie widoki podrzędne w układzie są wyrównane pionowo.
Fragment reprezentuje zachowanie lub część interfejsu w aktywności. W jednym działaniu możesz połączyć kilka fragmentów, aby utworzyć interfejs wielopanelowy, a fragmentu możesz używać w wielu działaniach.
Fragment to modułowa sekcja aktywności, coś w rodzaju „podaktywności”, której możesz też używać w innych aktywnościach:
- Fragment ma własny cykl życia i otrzymuje własne zdarzenia wejściowe.
- Fragment możesz dodać lub usunąć w trakcie działania aktywności.
- Fragment jest zdefiniowany w klasie Kotlin.
- Interfejs fragmentu jest zdefiniowany w pliku układu XML.
Aplikacja AndroidTrivia ma główną aktywność i kilka fragmentów. Większość fragmentów i ich plików układu została już zdefiniowana. W tym zadaniu utworzysz fragment i dodasz go do głównej aktywności aplikacji.
Krok 1. Dodaj klasę fragmentu
W tym kroku utworzysz pustą klasę TitleFragment
. Zacznij od utworzenia klasy Kotlin dla nowego fragmentu:
- W Android Studio kliknij dowolne miejsce w okienku Projekt, aby przywrócić fokus do plików projektu. Kliknij np. folder com.example.android.navigation.
- Wybierz Plik > Nowy > Fragment > Fragment (pusty).
- Jako nazwę fragmentu użyj TitleFragment. Wyczyść wszystkie pola wyboru, w tym create Layout XML (utwórz plik XML układu), include fragment factory methods (uwzględnij metody fabryczne fragmentów) i include interface callbacks (uwzględnij wywołania zwrotne interfejsu).
- Kliknij Zakończ.
- Otwórz plik fragmentu
TitleFragment.kt
, jeśli nie jest jeszcze otwarty. Zawiera metodęonCreateView()
, która jest jedną z metod wywoływanych podczas cyklu życia fragmentu. - W pliku
onCreateView()
usuń sekcjęreturn TextView(activity).apply
, w tym wiersz zaczynający się odsetText
. FunkcjaonCreateView()
zawiera teraz tylko ten kod:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
}
Tworzenie obiektu wiązania
Fragment nie zostanie teraz skompilowany. Aby fragment się skompilował, musisz utworzyć obiekt wiązania i rozwinąć widok fragmentu (co jest równoznaczne z użyciem setContentView()
w przypadku aktywności).
- W metodzie
onCreateView()
wTitleFragment.kt
utwórz zmiennąbinding
(val binding
). - Aby rozwinąć widok fragmentu, wywołaj metodę
DataBindingUtil.inflate()
na obiekcieBinding
fragmentu, czyliFragmentTitleBinding
.
Przekaż do metody 4 parametry:
inflater
, czyliLayoutInflater
używany do powiększania układu powiązania.- Zasób układu XML układu do rozszerzenia. Użyj jednego z układów, które są już zdefiniowane,
R.layout.fragment_title
. container
dla wydawcy nadrzędnegoViewGroup
. (Ten parametr jest opcjonalny).false
dla wartościattachToParent
.
- Przypisz powiązanie zwracane przez
DataBindingUtil.inflate
do zmiennejbinding
. - Zwróć
binding.root
z metody, która zawiera rozwinięty widok. MetodaonCreateView()
wygląda teraz tak:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding = DataBindingUtil.inflate<FragmentTitleBinding>(inflater,
R.layout.fragment_title,container,false)
return binding.root
}
Krok 2. Dodaj nowy fragment do głównego pliku układu
W tym kroku dodasz element TitleFragment
do pliku układu activity_main.xml
aplikacji.
- Otwórz res > layout > activity_main.xml i kliknij kartę Text (Tekst), aby wyświetlić kod XML układu.
- W istniejącym elemencie
LinearLayout
dodaj elementfragment
. - Ustaw identyfikator fragmentu na
titleFragment
. - Ustaw nazwę fragmentu na pełną ścieżkę klasy fragmentu, która w tym przypadku to
com.example.android.navigation.TitleFragment
. - Ustaw szerokość i wysokość układu na
match_parent
.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/titleFragment"
android:name="com.example.android.navigation.TitleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
</layout>
- Uruchom aplikację. Fragment został dodany do ekranu głównego.
Projekt Android Studio: AndroidTriviaFragment
W tym module dodaliśmy fragment do aplikacji AndroidTrivia, nad którą będziemy pracować w 2 kolejnych modułach w tej lekcji.
- Fragment to modułowa sekcja działania.
- Fragment ma własny cykl życia i otrzymuje własne zdarzenia wejściowe.
- Użyj tagu
<fragment>
, aby zdefiniować układ fragmentu w pliku układu XML. - Rozwiń układ fragmentu w
onCreateView()
. - Fragment możesz dodać lub usunąć w trakcie działania aktywności.
Kurs Udacity:
Dokumentacja dla deweloperów aplikacji na Androida:
W tej sekcji znajdziesz listę możliwych zadań domowych dla uczniów, którzy wykonują ten moduł w ramach kursu prowadzonego przez instruktora. Nauczyciel musi:
- W razie potrzeby przypisz pracę domową.
- Poinformuj uczniów, jak przesyłać projekty.
- Oceń zadania domowe.
Instruktorzy mogą korzystać z tych sugestii w dowolnym zakresie i mogą zadawać inne zadania domowe, które uznają za odpowiednie.
Jeśli wykonujesz ten kurs samodzielnie, możesz użyć tych zadań domowych, aby sprawdzić swoją wiedzę.
Odpowiedz na te pytania
Pytanie 1
Jakie są różnice między fragmentami a aktywnościami? Zaznacz wszystkie prawdziwe stwierdzenia.
- Podczas tworzenia fragmentu rozwijasz układ w metodzie
onCreateView()
. Podczas tworzenia aktywności rozwijasz układ wonCreate()
. - Działanie ma własny układ, ale fragment nie może mieć własnego układu.
- Działanie ma własny cykl życia, ale fragment nie.
- Podczas rozszerzania układu fragmentu lub aktywności możesz odwoływać się do układu jako
R.layout.
layoutname
.
Pytanie 2
Które z poniższych stwierdzeń dotyczących fragmentów są prawdziwe? Zaznacz wszystkie pasujące opcje.
- Fragmentu możesz używać w więcej niż 1 aktywności.
- Jedna aktywność może mieć wiele fragmentów.
- Po zdefiniowaniu fragmentu w klasie Kotlin fragment jest automatycznie dodawany do pliku układu
activity_main.xml
. - Użyj tagu
<fragment>
, aby określić miejsce w pliku układu, w którym ma zostać wstawiony fragment.
Rozpocznij następną lekcję:
Linki do innych ćwiczeń z tego kursu znajdziesz na stronie docelowej ćwiczeń z podstaw języka Kotlin na Androidzie.