Navigation

Navigation bezieht sich auf die Interaktionen, über die Nutzer zwischen den verschiedenen Inhalten in Ihrer App hin- und herspringen und diese wieder verlassen können.

Die Navigationskomponente von Android Jetpack umfasst die Navigationsbibliothek, das Safe Args Gradle-Plug-in und Tools zur Implementierung der App-Navigation. Die Navigationskomponente unterstützt verschiedene Anwendungsfälle der Navigation, von einfachen Klicks auf Schaltflächen bis hin zu komplexeren Mustern wie App-Leisten und der Navigationsleiste.

Schlüsselkonzepte

Die folgende Tabelle bietet einen Überblick über die wichtigsten Konzepte der Navigation und die Haupttypen, die Sie zu deren Implementierung verwenden.

Vorgabe

Zweck

Typ

Host

Ein UI-Element, das das aktuelle Navigationsziel enthält. Das heißt, wenn Nutzende durch eine App navigieren, tauscht die App im Grunde die Ziele in und aus dem Navigationshost aus.

Grafik

Eine Datenstruktur, die alle Navigationsziele innerhalb der App und deren Verbindung definiert.

NavGraph

Controller

Der zentrale Koordinator für die Verwaltung der Navigation zwischen Zielen. Der Controller bietet Methoden für die Navigation zwischen Zielen, die Verarbeitung von Deeplinks, die Verwaltung des Back-Stacks und vieles mehr.

NavController

Ziel

Ein Knoten im Navigationsdiagramm. Wenn der Nutzer diesen Knoten aufruft, zeigt der Host seinen Inhalt an.

NavDestination

Wird normalerweise beim Erstellen des Navigationsdiagramms erstellt.

Route

Kennzeichnet ein Ziel und alle von ihm erforderlichen Daten eindeutig.

Sie können Routen verwenden. Routen führen Sie zu Zielen.

Beliebiger serieller Datentyp.

Vorteile und Funktionen

Die Komponente „Navigation“ bietet eine Reihe weiterer Vorteile und Funktionen, darunter:

  • Animationen und Übergänge:Stellt standardisierte Ressourcen für Animationen und Übergänge zur Verfügung.
  • Deeplinks:Implementiert und verarbeitet Deeplinks, über die Nutzer direkt zu einem Ziel gelangen.
  • UI-Muster:Unterstützt Muster wie Navigationsleisten und die Navigation am unteren Rand mit minimalem Zusatzaufwand.
  • Typsicherheit: Bietet Unterstützung für die Weitergabe von Daten zwischen Zielen mit der Typensicherheit.
  • Unterstützung von ViewModel:Ermöglicht die Zuordnung einer ViewModel zu einem Navigationsdiagramm, um UI-bezogene Daten zwischen den Zielen der Grafik zu teilen.
  • Fragmenttransaktionen: Unterstützt Fragmenttransaktionen und verarbeitet sie.
  • Sichern und Sichern:Die Back-up- und Back-up-Aktionen werden standardmäßig korrekt verarbeitet.

Umgebung einrichten

Damit die Navigation in Ihrem Projekt unterstützt wird, fügen Sie der Datei build.gradle Ihrer Anwendung die folgenden Abhängigkeiten hinzu:

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")
}

Informationen zum Hinzufügen weiterer Architekturkomponenten zu Ihrem Projekt finden Sie unter Komponenten zum Projekt hinzufügen.

Nächste Schritte

Weitere Dokumentation und Ressourcen im Zusammenhang mit der Navigationskomponente finden Sie in den folgenden Ressourcen.

Detaillierte Leitfäden

Weitere Informationen zum Implementieren eines Navigationshosts und von NavController sowie zur Interaktion mit Compose und anderen UI-Frameworks finden Sie in den folgenden Anleitungen:

Codelabs

Videos

Produktproben