Android Kotlin Fundamentals 03.1: Tworzenie fragmentu

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.

  1. Pobierz projekt AndroidTrivia-Starter Android Studio.
  2. Otwórz projekt w Android Studio i uruchom aplikację. Gdy aplikacja się otworzy, nie zrobi nic innego niż wyświetli nazwę i pusty ekran.


  3. 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.

  4. Otwórz folder res > układ i kliknij dwukrotnie plik activity_main.xml. W edytorze układu pojawi się plik activity_main.xml.
  5. Kliknij kartę Projekt. Drzewo komponentów pliku activity_main.xml pokazuje układ główny jako pionowy LinearLayout.



    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:

  1. 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.
  2. Wybierz File > New > Fragment > Fragment (puste).
  3. 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.
  4. Kliknij Zakończ.
  5. 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.
  6. Usuń z sekcji onCreateView() fragment return TextView(activity).apply, w tym wiersz, który zaczyna się od setText. Funkcja onCreateView() 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).

  1. W metodzie onCreateView() (TitleFragment.kt) utwórz zmienną binding (val binding).
  2. Aby zawyżyć widok fragmentu, wywołaj metodę DataBindingUtil.inflate() w obiekcie Binding fragmentu, czyli FragmentTitleBinding.

    Przekaż 4 parametry do metody:
  • inflater, czyli LayoutInflater 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ędnego ViewGroup. (Ten parametr jest opcjonalny).
  • false jako wartość attachToParent.
  1. Przypisz wiązanie zwrócone przez DataBindingUtil.inflate do zmiennej binding.
  2. Zwróć wartość binding.root z metody, która zawiera zawyżony widok. Metoda onCreateView() 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.

  1. Otwórz plik res > układ > activity_main.xml i kliknij kartę Tekst, aby wyświetlić kod XML układu.
  2. W istniejącym elemencie LinearLayout dodaj element fragment.
  3. Ustaw identyfikator fragmentu: titleFragment.
  4. Nadaj fragmentowi nazwę pełnej ścieżki, czyli w tym przypadku com.example.android.navigation.TitleFragment.
  5. 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>
  1. 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 w onCreate().
  • 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ę: 3.2 Definiowanie ścieżek nawigacji

Linki do innych ćwiczeń z programowania w tym kursie znajdziesz na stronie docelowej z ćwiczeniami z podstaw Androida Kotlin.