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. |
|
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. |
|
Ziel |
Ein Knoten im Navigationsdiagramm. Wenn der Nutzer diesen Knoten aufruft, zeigt der Host seinen Inhalt an. |
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.5" // 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.5" // 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:
- Navigations-Controller erstellen: Beschreibt, wie ein
NavController
erstellt wird. - Navigationsgrafik erstellen: Beschreibt, wie Sie einen Navigationshost und ein Navigationsdiagramm erstellen.
- Zu einem Ziel navigieren: Zeigt, wie Sie mit einer
NavController
zwischen den Zielen in Ihrem Diagramm wechseln.
Codelabs
- Jetpack-Navigation
- Fragmente und die Navigationskomponente
- Adaptive App mit dynamischer Navigation erstellen
Videos
- Navigation
- 10 Best Practices für den Wechsel zu einer einzigen Aktivität
- Einzelne Aktivität: Warum, wann und wie (Android Dev Summit 2018)
- Android Jetpack: UI-Navigation mit dem Navigations-Controller verwalten (Google I/O '18)