Die Navigationskomponente in Android Jetpack unterstützt Jetpack Compose-Anwendungen. Sie können zwischen den zusammensetzbaren Funktionen wechseln und gleichzeitig die Infrastruktur und Funktionen der Navigationskomponente nutzen.
Auf dieser Seite werden die Unterschiede zur Jetpack-Navigation in Compose für Wear OS beschrieben.
Einrichten
Verwenden Sie die folgende Abhängigkeit in der build.gradle-Datei Ihres App-Moduls:
Kotlin
dependencies { def wear_compose_version = "1.3.1" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
Es wird anstelle des Artefakts androidx.navigation:navigation-compose
verwendet, da es alternative, speziell für Wear OS implementierte Implementierungen bietet.
Navigations-Controller, Host und Grafik erstellen
Für die Navigation mit Compose für Wear OS sind dieselben drei Komponenten erforderlich, die auch für Nicht-Wear OS-Apps benötigt werden: Navigations-Controller, Host und Grafik.
Mit rememberSwipeDismissableNavController()
kannst du eine Instanz von WearNavigator
erstellen. Das ist eine Implementierung von NavController
, die für Wear OS-Anwendungen geeignet ist:
Kotlin
val navController = rememberSwipeDismissableNavController()
Die NavController
ist die primäre API, die zur Navigation in Compose-Anwendungen verwendet wird. Damit wird die Navigation zwischen zusammensetzbaren Funktionen im Navigationshost gesteuert. Unter Wear OS ist das SwipeDismissableNavHost
.
Kotlin
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
Wie bei der komponierbaren NavHost
wird auch hier auf den Navigations-Controller, die Route für das Startziel und den Builder für den Navigationsdiagramm verwiesen, der hier als nachgestelltes Lambda dargestellt wird.
Das Startziel muss im Builder für Navigationsgrafiken angegeben werden, zusammen mit allen anderen Zielen, die mit dem Navigations-Controller navigierbar sein sollen.
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { composable("message_list") { MessageList(onMessageClick = { id -> navController.navigate("message_detail/$id") }) } composable("message_detail/{id}") { MessageDetail(id = it.arguments?.getString("id")!!) } }
Weitere Informationen zu Jetpack Navigation finden Sie unter Mit Compose navigieren oder das Code-Lab für Jetpack Compose-Navigation.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Jetpack Navigation zu Navigation Compose migrieren
- Navigation mit der Funktion „Schreiben“
- Mit der Funktion „Schreiben“ zwischen Bildschirmen wechseln