Navigation

Die Navigation bezieht sich auf die Interaktionen, mit denen Nutzer zwischen den verschiedenen Inhalten in Ihrer App wechseln und diese 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 Navigationsfälle, von einfachen Schaltflächenklicks bis hin zu komplexeren Mustern wie App-Leisten und Navigationsleisten.

Schlüsselkonzepte

In der folgenden Tabelle finden Sie einen Überblick über die wichtigsten Navigationskonzepte und die wichtigsten Typen, mit denen Sie sie implementieren.

Vorgabe

Zweck

Eingeben

Host

Ein UI-Element, das das aktuelle Navigationsziel enthält. Wenn ein Nutzer also durch eine App navigiert, wechselt die App im Wesentlichen Ziele in den Navigationshost und wieder heraus.

Grafik

Eine Datenstruktur, die alle Navigationsziele innerhalb der App und ihre Verknüpfung definiert.

NavGraph

Kontrolle

Der zentrale Koordinator für die Navigation zwischen Zielen. Der Controller bietet unter anderem Methoden zum Wechseln zwischen Zielen, zum Umgang mit Deeplinks und zum Verwalten des Backstacks.

NavController

Ziel

Ein Knoten im Navigationsgraphen. Wenn der Nutzer diesen Knoten aufruft, zeigt der Host den Inhalt an.

NavDestination

Wird in der Regel beim Erstellen des Navigationsgraphen erstellt.

Route

Identifiziert ein Ziel und alle dafür erforderlichen Daten eindeutig.

Sie können sich anhand von Routen orientieren. Routen führen Sie zu Zielen.

Jeder serialisierbare Datentyp.

Vorteile und Funktionen

Die Navigationskomponente bietet eine Reihe weiterer Vorteile und Funktionen, darunter:

  • Animationen und Übergänge:Hier finden Sie standardisierte Ressourcen für Animationen und Übergänge.
  • Deeplinks:Implementiert und verarbeitet Deeplinks, über die Nutzer direkt zu einem Ziel weitergeleitet werden.
  • UI-Muster:Unterstützt Muster wie Navigationsleisten und Bottom-Navigation mit minimalem zusätzlichen Aufwand.
  • Typsicherheit:Unterstützung für die Weitergabe von Daten zwischen Zielen mit Typsicherheit.
  • ViewModel-Unterstützung:Damit kann eine ViewModel auf einen Navigationsgraphen angewendet werden, um UI-bezogene Daten zwischen den Zielen des Graphen zu teilen.
  • Fragment-Transaktionen:Fragment-Transaktionen werden vollständig unterstützt und verarbeitet.
  • Zurück und hoch:Die Aktionen „Zurück“ und „Hoch“ werden standardmäßig korrekt verarbeitet.

Umgebung einrichten

Wenn Sie die Navigationsunterstützung in Ihr Projekt einbinden möchten, fügen Sie der Datei build.gradle Ihrer App 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.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")
}

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

Nächste Schritte

Weitere Dokumentation und Ressourcen zur Navigationskomponente finden Sie in den folgenden Ressourcen.

Detaillierte Anleitungen

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

Codelabs

Videos

Produktproben