Nawigacja

Nawigacja odnosi się do interakcji, które pozwalają użytkownikom przechodzić między różnymi elementami zawartości aplikacji, do nich docierać i wycofywać się z nich.

Komponent nawigacji w Androidzie Jetpack obejmuje bibliotekę nawigacji, wtyczkę Safe Args Gradle i narzędzia ułatwiające wdrożenie nawigacji po aplikacjach. Komponent Nawigacja obsługuje różne przypadki użycia nawigacji, od prostych kliknięć przycisków po bardziej złożone wzorce, takie jak paski aplikacji i szuflada nawigacji.

Kluczowych pojęć

W tabeli poniżej znajdziesz omówienie głównych pojęć związanych z nawigacją oraz głównych typów używanych do ich wdrażania.

Pomysł

Cel

Typ

Host

Element interfejsu zawierający bieżące miejsce docelowe nawigacji. Oznacza to, że gdy użytkownik porusza się po aplikacji, aplikacja zmienia miejsca docelowe zarówno z hosta nawigacji, jak i z niego.

Wykres

Struktura danych definiująca wszystkie miejsca docelowe nawigacji w aplikacji i sposób ich łączenia.

NavGraph

Kontroler

Centralny koordynator do zarządzania nawigacją między miejscami docelowymi. Kontroler udostępnia metody nawigowania między miejscami docelowymi, obsługi precyzyjnych linków, zarządzania stosem wstecznym i nie tylko.

NavController

Miejsce docelowe

Węzeł na wykresie nawigacyjnym. Gdy użytkownik przejdzie do tego węzła, host wyświetli jego zawartość.

NavDestination

Zwykle tworzony podczas tworzenia wykresu nawigacyjnego.

Trasa

Jednoznacznie identyfikuje miejsce docelowe i wszystkie wymagane do niego dane.

Możesz korzystać z nawigacji za pomocą tras. Trasy prowadzą do miejsc docelowych.

Dowolny typ danych możliwych do serializacji.

Zalety i funkcje

Komponent Nawigacja ma wiele innych zalet i funkcji, w tym:

  • Animacje i przejścia: udostępnia ustandaryzowane zasoby animacji i przejść.
  • Precyzyjne linki: implementuje i obsługuje precyzyjne linki, które prowadzą użytkownika bezpośrednio do miejsca docelowego.
  • Wzorce interfejsu: obsługa wzorców takich jak panele nawigacji i dolna nawigacja przy minimalnym nakładzie pracy.
  • Bezpieczeństwo typu: obejmuje obsługę przesyłania danych między miejscami docelowymi z zabezpieczeniem typu.
  • Obsługa ViewModel: włącza zakres zakresu ViewModel do wykresu nawigacyjnego, aby udostępniać dane związane z interfejsem między miejscami docelowymi wykresu.
  • Transakcje z fragmentem: w pełni obsługuje i obsługuje transakcje z fragmentami.
  • Kopia zapasowa i tworzenie:domyślnie prawidłowo obsługuje działania związane z tworzeniem kopii zapasowej i tworzeniem kopii zapasowej.

Konfigurowanie środowiska

Aby uwzględnić w projekcie obsługę nawigacji, dodaj te zależności do pliku build.gradle aplikacji:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.4"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.4"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Informacje o dodawaniu innych komponentów architektury do projektu znajdziesz w artykule Dodawanie komponentów do projektu.

Dalsze kroki

Więcej dokumentacji i zasobów związanych z komponentem Nawigacja znajdziesz w tych materiałach.

Szczegółowe przewodniki

Więcej informacji o implementowaniu hosta nawigacji i elementu NavController, a także szczegółowych informacji na temat ich interakcji z interfejsem tworzenia wiadomości i innymi platformami interfejsu znajdziesz w tych przewodnikach:

Ćwiczenia z programowania

Filmy

Próbki