Dydaktyka / Programowanie urządzeń mobilnych 2

Listy zadań HTML

Webowa wersja list zadań laboratoryjnych. Menu po lewej wybiera listę, a panel po prawej pokazuje treść przekonwertowaną z notebooków.

Listy zadań HTML

L01 - Lista 1

Pobierz .ipynb

Lista 1

Termin wykonania:

  • gr wt: 21.10
  • gr czw: 23.10

Zad 1 - 6 pkt

Aplikacja "ComposeShop" posiada jedną główną strukturę nawigacyjną (obsługiwaną przez dolny pasek i szufladę) oraz jeden zagnieżdżony potok nawigacyjny przeznaczony do obsługi procesu składania zamówienia. (Przykład działania na filmie L1)

Główny interfejs aplikacji, opiera się na połączeniu dolnej nawigacji i szuflady nawigacyjnej. Wszystkie te ekrany znajdują się w jednym, głównym grafie nawigacyjnym (NavHost).

Ekrany w Dolnej Nawigacji (Bottom Navigation):

Nawigacja odbywa się przez kliknięcie odpowiedniej ikony na dolnym pasku, co wywołuje navController.navigate("nazwa_ekranu").

  • Ekran Główny: Pierwszy ekran po uruchomieniu aplikacji. Wyświetla listę.
  • Ekran Kategorii: Lista z kategoriami produktów (np. "Elektronika", "Moda", "Dom").
  • Ekran Koszyka: Wyświetla listę produktów dodanych do koszyka (dane mogą być statyczne). Przycisk "Przejdź do kasy" włącza zagnieżdżony potok nawigacyjy.
  • Ekran Ulubionych: Lista produktów oznaczonych przez użytkownika jako ulubione.

Ekrany w Szufladzie Nawigacyjnej (Drawer Navigation)

  • Ekran Mojego Profilu: Wyświetla podstawowe informacje o użytkowniku (np. imię, adres email).
  • Ekran Historii Zamówień: Lista poprzednich zamówień z datą i statusem.
  • Ekran Ustawień: Zawiera opcje konfiguracyjne, np. przełączniki do włączenia trybu ciemnego czy powiadomień (symulowane).
  • Przycisk "Wyloguj": Symuluje proces wylogowania, przenosząc do ekranu startowego.

Zagnieżdżony Potok Nawigacyjny: Proces Składania Zamówienia

Nawigacja do tego potoku rozpoczyna się na Ekranie Koszyka. Po wejściu w ten tryb, dolna nawigacja i szuflada przestają być widoczne, aby użytkownik mógł w pełni skupić się na procesie zakupu. Nawigacja między ekranami w tym grafie jest liniowa – użytkownik przechodzi z kroku 1 do 2, a potem do 3.

  • Ekran 1: Adres dostawy - Zawiera prosty formularz do wpisania danych adresowych.Przycisk "Dalej" przenosi do kolejnego ekranu w potoku
  • Ekran 2: Metoda płatności - Umożliwia wybór jednej z kilku opcji płatności (np. za pomocą RadioButton). Przycisk "Podsumowanie" przenosi do ostatniego kroku.
  • Ekran 3: Podsumowanie i Potwierdzenie - Wyświetla wszystkie zebrane informacje: produkty z koszyka, adres dostawy i wybraną metodę płatności.
  • Przycisk "Zamów i zapłać" kończy cały proces. Jego kliknięcie wykonuje kluczową akcję nawigacyjną - Usuwa cały graf składania zamówienia (checkout_graph) z historii nawigacji, dzięki czemu użytkownik nie może przypadkowo wrócić przyciskiem "wstecz" do ekranu płatności. Przenosi użytkownika z powrotem do głównego ekranu aplikacji.

Odpowiedź ustna - 4 pkt

Oceny

ocenapunkty
3,06 pkt
3,57 pkt
4,08 pkt
4,59 pkt
5,010 pkt

Przykładowe wykonanie

Zadanie 1 - przykładowe wykonanie

Pytania

Tematyka: Compose Navigation, NavHost, NavController, Nested Graphs, Drawer, Bottom Navigation, Back Stack.

Pytania dodatkowe: Activity, Intent, Context.

  1. Co to jest Activity i jaka jest jej rola w aplikacji opartej w całości o Jetpack Compose?
  2. Czym jest Context i do czego jest potrzebny w aplikacji na Androida?
  3. Do czego służy mechanizm Intent w systemie Android?
  4. Jaka jest rola komponentu NavHost w nawigacji Compose?
  5. Do czego służy NavController?
  6. Co to jest route (ścieżka) w kontekście nawigacji?
  7. Jak definiujemy ekran (cel nawigacji) wewnątrz NavHost?
  8. Co określa parametr startDestination w NavHost?
  9. Co to jest i w jakim celu stosujemy nawigacje zagnieżdżone (nested navigation)?
  10. Co robi funkcja navController.popBackStack()?
  11. Co to jest "back stack" (stos nawigacji)?
  12. Jak przekazać prosty argument (np. ID produktu) do innego ekranu w Compose Navigation?
  13. Czym jest Deep Link i jak Intent Filter w manifeście może być z nim powiązany?
  14. Jak centralizacja ścieżek nawigacji (np. w obiekcie object) pomaga w utrzymaniu kodu?
  15. Opisz cykl życia Activity (najważniejsze stany).
  16. Co to jest jawny (explicit) Intent? Podaj przykład użycia.
  17. Co to jest niejawny (implicit) Intent? Podaj przykład użycia.
  18. Jak stan NavController (rememberNavController()) przeżywa rekompozycję?
  19. Do czego służy funkcja setContent w ComponentActivity?
  20. Jak otworzyć i zamknąć szufladę nawigacyjną (Drawer) programowo?
  21. Czym jest Application Context oraz Activity Context?
  22. Czy jeden NavController może zarządzać wieloma NavHost?