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. |
|
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. |
|
Ziel |
Ein Knoten im Navigationsgraphen. Wenn der Nutzer diesen Knoten aufruft, zeigt der Host den Inhalt an. |
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:
- Navigationscontroller erstellen: Hier erfahren Sie, wie Sie einen
NavController
erstellen. - Navigationsgraph erstellen: Hier erfahren Sie, wie Sie einen Navigationshost und einen Navigationsgraphen erstellen.
- Zu einem Ziel navigieren: Hier wird gezeigt, wie Sie mithilfe eines
NavController
zwischen den Zielen in Ihrem Diagramm wechseln.
Codelabs
- Weitere Informationen zu Jetpack Navigation
- Fragmente und die Navigationskomponente
- Adaptive App mit dynamischer Navigation erstellen
Videos
- Navigation steuern
- 10 Best Practices für die Umstellung auf eine einzelne Aktivität
- Einzelne Aktivität: Warum, wann und wie (Android Dev Summit '18)
- Android Jetpack: UI-Navigation mit Navigationscontroller verwalten (Google I/O '18)