Te ćwiczenia są częścią kursu Android Kotlin Fundamentals. Skorzystaj z tego kursu, jeśli będziesz wykonywać kolejno kilka ćwiczeń z programowania. Wszystkie ćwiczenia z kursu są wymienione na stronie docelowej ćwiczeń z programowania na temat Kotlin.
Dzięki nim dowiesz się więcej o fragmentach i utworzysz fragment w aplikacji startowej o nazwie AndroidTrivia. Z następnego ćwiczenia z programowania dowiesz się więcej o nawigacji i wykonasz dodatkowe czynności w aplikacji AndroidTrivia.
Co musisz wiedzieć
- Podstawy Kotlina
- Jak tworzyć podstawowe aplikacje na Androida w Kotlinie
- Praca z układami
Czego się nauczysz
- Statyczne dodawanie fragmentu do aplikacji
Jakie zadania wykonasz:
- Utwórz fragment aktywności.
W ramach 3 lekcji, które składają się na tę lekcję, pracujesz nad aplikacją o nazwie AndroidTrivia. Ukończona aplikacja to gra, w której użytkownik odpowiada na 3 pytania o kodowanie Androida. Jeśli użytkownik odpowie poprawnie na wszystkie trzy pytania, wygra grę i będzie mógł udostępnić wyniki.
Aplikacja AndroidTrivia obrazuje wzorce i elementy nawigacyjne. Aplikacja ma kilka elementów:
- Na ekranie tytułu widocznym po lewej stronie na zrzucie ekranu powyżej użytkownik rozpoczyna grę.
- Na ekranie gry z pytaniami (pokazanymi w środku powyżej) użytkownik gra w grę i przesyła swoje odpowiedzi.
- Panel nawigacji po prawej stronie wyświetla się po bokach aplikacji i zawiera menu z nagłówkiem. Szuflada
otwiera panel nawigacji. Menu w szufladzie nawigacji zawiera link do strony z informacjami i linku do reguł gry.
W górnej części aplikacji znajduje się kolorowy widok o nazwie Pasek aplikacji, zwany także paskiem działań.
To zadanie dla początkujących, w ramach którego korzystasz z aplikacji początkowej, która zawiera kod szablonu i klasy klas, które są niezbędne do ukończenia aplikacji z quizami.
- Pobierz projekt AndroidTrivia-Starter Android Studio.
- Otwórz projekt w Android Studio i uruchom aplikację. Gdy aplikacja się otworzy, nie zrobi nic innego niż wyświetli nazwę i pusty ekran.
- W panelu Projekt w Android Studio otwórz widok Projekt: Android, by przeanalizować pliki projektu. Otwórz folder app > java, aby wyświetlić klasy
MainActivity
i fragmenty kodu. - Otwórz folder res > układ i kliknij dwukrotnie plik activity_main.xml. W edytorze układu pojawi się plik
activity_main.xml
. - Kliknij kartę Projekt. Drzewo komponentów pliku
activity_main.xml
pokazuje układ główny jako pionowyLinearLayout
.
W pionowym układzie liniowym wszystkie widoki podrzędne w układzie są wyrównane w pionie.
Fragment określa działanie lub część interfejsu użytkownika aktywności. W jedną aktywność można połączyć wiele fragmentów, aby utworzyć interfejs użytkownika z kilkoma palcami. Można też używać fragmentu na potrzeby wielu działań.
Fragment możesz traktować jako modułowy moduł aktywności, który może być używany również w innych działaniach.
- Fragment ma własny cykl życia i otrzymuje własne zdarzenia wejściowe.
- Podczas aktywności możesz dodawać i usuwać fragmenty.
- Fragment jest zdefiniowany w klasie Kotlin.
- Interfejs użytkownika 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ło zdefiniowanych dla Ciebie. W tym zadaniu tworzysz fragment i dodajesz 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 panelu projektu, by przenieść zaznaczenie do plików projektu. Na przykład kliknij folder com.example.android.Nawigacja.
- Wybierz File > New > Fragment > Fragment (puste).
- Jako nazwę fragmentu użyj TitleFragment. Wyczyść wszystkie pola wyboru, w tym utwórz szablon XML, uwzględnij metody fabryczne odpowiadające fragmentom i uwzględnij wywołania zwrotne interfejsu.
- Kliknij Zakończ.
- Otwórz plik z fragmentem
TitleFragment.kt
, jeśli nie jest jeszcze otwarty. Zawiera on metodęonCreateView()
, która jest jedną z metod wywoływanych podczas cyklu życia fragmentu. - Usuń z sekcji
onCreateView()
fragmentreturn TextView(activity).apply
, w tym wiersz, który zaczyna się odsetText
. FunkcjaonCreateView()
pozostaje tylko w kodzie:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
}
Tworzenie obiektu wiązania
Fragment nie zostanie skompilowany. Aby skompilować fragment, musisz utworzyć obiekt wiązania i zawyżyć jego widok (odpowiada to użyciu setContentView()
w przypadku aktywności).
- W metodzie
onCreateView()
(TitleFragment.kt
) utwórz zmiennąbinding
(val binding
). - Aby zawyżyć widok fragmentu, wywołaj metodę
DataBindingUtil.inflate()
w obiekcieBinding
fragmentu, czyliFragmentTitleBinding
.
Przekaż 4 parametry do metody:
inflater
, czyliLayoutInflater
używany do zapełniania układu wiązania.- Zasób XML układu do zmaksymalizowania. Użyj jednego z układów zdefiniowanych już dla Ciebie:
R.layout.fragment_title
. container
dla elementu nadrzędnegoViewGroup
. (Ten parametr jest opcjonalny).false
jako wartośćattachToParent
.
- Przypisz wiązanie zwrócone przez
DataBindingUtil.inflate
do zmiennejbinding
. - Zwróć wartość
binding.root
z metody, która zawiera zawyżony 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 TitleFragment
do pliku układu activity_main.xml
aplikacji.
- Otwórz plik res > układ > activity_main.xml i kliknij kartę Tekst, aby wyświetlić kod XML układu.
- W istniejącym elemencie
LinearLayout
dodaj elementfragment
. - Ustaw identyfikator fragmentu:
titleFragment
. - Nadaj fragmentowi nazwę pełnej ścieżki, czyli w tym przypadku
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 na Android Studio: AndroidTriviaFragment
W tym kursie udało Ci się dodać fragment do aplikacji AndroidTrivia, nad którym będziesz pracować w kolejnych 2 ćwiczeniach z programowania.
- Fragment to modułowy moduł danej aktywności.
- 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. - Rozszerz układ fragmentu w
onCreateView()
. - Podczas aktywności możesz dodawać i usuwać fragmenty.
Kurs Udacity:
Dokumentacja dla programistów Androida:
Ta sekcja zawiera listę możliwych zadań domowych dla uczniów, którzy pracują w ramach tego ćwiczenia w ramach kursu prowadzonego przez nauczyciela. To nauczyciel może wykonać te czynności:
- W razie potrzeby przypisz zadanie domowe.
- Poinformuj uczniów, jak przesyłać zadania domowe.
- Oceń projekty domowe.
Nauczyciele mogą wykorzystać te sugestie tak długo, jak chcą lub chcą, i mogą przypisać dowolne zadanie domowe.
Jeśli samodzielnie wykonujesz te ćwiczenia z programowania, możesz sprawdzić swoją wiedzę w tych zadaniach domowych.
Odpowiedz na te pytania
Pytanie 1
Jakie są różnice między działami i fragmentami? Zaznacz wszystkie stwierdzenia, które są prawdziwe.
- Tworząc fragment, zawyżasz układ w metodzie
onCreateView()
. Podczas tworzenia aktywności zawyżasz układ wonCreate()
. - Aktywność ma własny układ, ale fragment nie może mieć własnego układu.
- Aktywność ma własny cykl życia, ale fragment nie.
- Jeśli na potrzeby danego fragmentu lub działania chcesz zaspokoić układ, możesz odwoływać się do niego jako
R.layout.
layoutname
.
Pytanie 2
Które z tych stwierdzeń na temat fragmentów jest prawdziwe? Wybierz wszystkie pasujące odpowiedzi.
- Możesz używać fragmentu na więcej niż jedną aktywność.
- Jedna aktywność może mieć wiele fragmentów.
- Gdy zdefiniujesz fragment w klasie Kotlin, zostanie on automatycznie dodany do pliku układu
activity_main.xml
. - Użyj tagu
<fragment>
, aby wskazać miejsce w pliku układu, w którym chcesz wstawić fragment.
Rozpocznij następną lekcję:
Linki do innych ćwiczeń z programowania w tym kursie znajdziesz na stronie docelowej z ćwiczeniami z podstaw Androida Kotlin.