Navigation Compose で Activity への遷移をするにはどうすればいいのか調べたのでそれについて書いていこうと思います。
Navigation Compose については以前記事を書いたのでそちらをみてください。
⚠️ここでの Navigation Compose のバージョンは 1.0.0-alpha02 を使用しているので、Stable になるまでに破壊的な変更が入る可能性もあります
Navigation Compose に Activity の定義を追加
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "home") {
composable(route = "home") {
HomeScreen(...)
}
composable(route = "settings") {
SettingsScreen(...)
}
activity(id = R.id.nav_oss_licenses) {
activityClass = OssLicensesMenuActivity::class
}
}
今回は OSS Licenses Gradle Plugin の OssLicensesMenuActivity
遷移を定義します。
id は xml に定義しておき、NavGraphBuilder
の activity() で遷移先の Activity を定義します。
遷移させる
Button(
onClick = {
navController.navigate(R.id.nav_oss_licenses)
}
) {
Text(text = "Licenses")
}
遷移させるには NavController#navigate
に定義したときの id を渡すだけで遷移できます。
Navigation は Kotlin DSL で定義することができ、Navigation Compose でもその方法が使えるので、Activity の遷移も Navigation Compose で行えました。
Navigation を Kotlin DSL で定義するのは公式のドキュメントがあるので参考にしてみてください。