Navigation

Nawigacja to interakcje, które umożliwiają użytkownikom poruszanie się po różnych elementach treści w aplikacji, wchodzenie w nie i z nich wychodzenie.

Komponent Nawigacja w Jetpacku na Androida zawiera bibliotekę Nawigacja, wtyczkę Gradle Safe Args oraz narzędzia ułatwiające implementację nawigacji w aplikacji. 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 schowki nawigacyjne.

Kluczowych pojęć

W tabeli poniżej znajdziesz omówienie najważniejszych pojęć dotyczących nawigacji oraz ich głównych typów.

Pomysł

Cel

Typ

Zorganizuj

Element UI zawierający bieżący cel nawigacji. Oznacza to, że gdy użytkownik przemieszcza się po aplikacji, aplikacja zasadniczo zamienia miejsca docelowe w gospodarzu nawigacji.

Wykres

Struktura danych, która definiuje wszystkie miejsca docelowe nawigacji w aplikacji i sposób ich łączenia.

NavGraph

Kontroler

Centralny koordynator zarządzania nawigacją między miejscami docelowymi. Kontroler udostępnia metody nawigacji między miejscami docelowymi, obsługi precyzyjnych linków i zarządzania stosem wstecz.

NavController

Miejsce docelowe

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

NavDestination

Zwykle tworzone podczas tworzenia grafu nawigacyjnego.

Trasa

jednoznacznie identyfikuje miejsce docelowe i wszystkie wymagane dane;

Możesz nawigować za pomocą tras. Trasy prowadzą do miejsc docelowych.

dowolny typ danych możliwy do serializacji;

Zalety i funkcje

Element Nawigacja zapewnia też wiele innych korzyści i funkcji, takich jak:

  • Animacje i przejścia: udostępnia standardowe zasoby do tworzenia animacji i przejść.
  • Precyzyjne linki: implementują i obsługują precyzyjne linki, które kierują użytkownika bezpośrednio do miejsca docelowego.
  • Wzorce interfejsu: obsługa wzorów takich jak menu nawigacyjne i dolna nawigacja przy minimalnym dodatkowym nakładzie pracy.
  • Bezpieczeństwo typów: obejmuje obsługę przekazywania danych między miejscami docelowymi z bezpieczeństwem typów.
  • Obsługa ViewModel: umożliwia ograniczenie zakresu działania ViewModel do wykresu nawigacyjnego, aby udostępniać dane związane z interfejsem między miejscami docelowymi wykresu.
  • Transakcje fragmentów: pełna obsługa transakcji fragmentów.
  • Wstecz i w górę: domyślnie obsługuje działania wstecz i w górę.

Konfigurowanie środowiska

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

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.6"

  // 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.6"

  // 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 do projektu innych komponentów architektury znajdziesz w artykule Dodawanie komponentów do projektu.

Dalsze kroki

Więcej dokumentacji i materiałów związanych ze składnikiem Nawigacja znajdziesz w tych zasobach.

Szczegółowe przewodniki

Więcej informacji o wdrażaniu hosta nawigacji i NavController, a także szczegółowe informacje o ich interakcji z Compose i innymi frameworkami UI znajdziesz w tych przewodnikach:

Ćwiczenia z programowania

Filmy

Próbki