Android Kotlin Fundamentals 03.1: Create a fragment

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.

  1. Pobierz projekt Android Studio AndroidTrivia-Starter.
  2. Otwórz projekt w Android Studio i uruchom aplikację. Po otwarciu aplikacja nie robi nic poza wyświetlaniem swojej nazwy i pustego ekranu.


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

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



    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:

  1. W Android Studio kliknij dowolne miejsce w okienku Projekt, aby przywrócić fokus do plików projektu. Kliknij np. folder com.example.android.navigation.
  2. Wybierz Plik > Nowy > Fragment > Fragment (pusty).
  3. 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).
  4. Kliknij Zakończ.
  5. 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.
  6. W pliku onCreateView() usuń sekcję return TextView(activity).apply, w tym wiersz zaczynający się od setText. Funkcja onCreateView() 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).

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

    Przekaż do metody 4 parametry:
  • inflater, czyli LayoutInflater 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.
  • containerdla wydawcy nadrzędnegoViewGroup. (Ten parametr jest opcjonalny).
  • false dla wartości attachToParent.
  1. Przypisz powiązanie zwracane przez DataBindingUtil.inflate do zmiennej binding.
  2. Zwróć binding.root z metody, która zawiera rozwinięty 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 element TitleFragment do pliku układu activity_main.xml aplikacji.

  1. Otwórz res > layout > activity_main.xml i kliknij kartę Text (Tekst), aby wyświetlić kod XML układu.
  2. W istniejącym elemencie LinearLayout dodaj element fragment.
  3. Ustaw identyfikator fragmentu na titleFragment.
  4. Ustaw nazwę fragmentu na pełną ścieżkę klasy fragmentu, która w tym przypadku to 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 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 w onCreate().
  • 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ę: 3.2. Określanie ścieżek nawigacji

Linki do innych ćwiczeń z tego kursu znajdziesz na stronie docelowej ćwiczeń z podstaw języka Kotlin na Androidzie.