义齿
19174 ワード
https://developer.android.com/jetpack/compose/navigation?hl=ko#deeplinks
まずNavHostを
構成可能なターゲットは、コンビネーション間で移動できる必要があります.グループ間の移動 ナビゲーション移動は、従来のjetpackナビゲーションと同様にnavControllerである.navideを使用してナビゲートします.現在に移動すると、合成は、操作に対応するidを追加するのではなく、ターゲットを決定します. を移動してナビゲートするときに使用するbundleのようにパラメータを渡すことができます.
グループ内グラフィックが大きいほど、グラフィックを複数の方法に分割することが推奨され、分割することができる. で分割されたグラフィックを整理します. は、まず、Bottom Navigationの上位構造を表示するNavControllerを定義し、次に基準ナビゲーション項目を配置する. の下部ナビゲーションメニューの項目を定義します. BottomNavigationは、その存在する上位構造において定義される. 💡 `NavBackStackEntry'はバックグラウンドスタック内のアイテムを表すデバイスです.
このオブジェクトが提供するライフサイクル、viewModel、SaveStateは、バックグラウンドスタック内のターゲットのライフサイクルと同じです.
build.gradle
dependencies {
def nav_version = "2.4.1"
implementation("androidx.navigation:navigation-compose:$nav_version")
}
NavHost
NavController
と組み合わせる NavHost
組合せに関連付ける必要があります. NavHost
は、構成可能なターゲットを指定するためのナビゲーション図を提供する. 接続NavController
.構成可能なターゲットは、コンビネーション間で移動できる必要があります.グループ間の移動
NavHost
の内容は自動的に 再構成.ナビゲーション図面の各構成可能なターゲット パスに関連付けられます.NavHost(navController = navController, startDestination = "profile") {
composable("profile") { Profile(/*...*/) }
composable("friendslist") { FriendsList(/*...*/) }
/*...*/
}
@Composable
fun Profile(navController: NavController) {
/*...*/
Button(onClick = { navController.navigate("friendslist") }) {
Text(text = "Navigate next")
}
/*...*/
}
/**인자를 보내줄 떄 **/
navController.navigate("profile/user1234")
/**인자를 받을 때 **/
NavHost(startDestination = "profile/{userId}") {
...
composable("profile/{userId}") {...}
}
NavHost(startDestination = "profile/{userId}") {
...
composable(
"profile/{userId}",
arguments = listOf(navArgument("userId") { type = NavType.StringType })
) {...}
}
NavController
NavController
は、アプリケーション画面および各画面状態を構成するコンポーネントのスタックを追跡する状態プールであるNavigationコンポーネントの中心APIである.グループ内
rememberNavController()
使用方法 NavController
を作成できます.val navController = rememberNavController()
分割NavigGraph
fun NavGraphBuilder.loginGraph(navController: NavController) {
navigation(startDestination = "username", route = "login") {
composable("username") { ... }
composable("password") { ... }
composable("registration") { ... }
}
}
NavHost(navController, startDestination = "home") {
communityGraph(navController)
loginGraph(navController)
setttingGraph(navController)
}
BottomNavigation
sealed class Screen(val route: String, @StringRes val resourceId: Int) {
object Profile : Screen("profile", R.string.profile)
object FriendsList : Screen("friendslist", R.string.friends_list)
}
val items = listOf(
Screen.Profile,
Screen.FriendsList,
)
BottomNavigation
グループ内 currentBackStackEntryAsState()
関数の現在の使用 NavBackStackEntry
を取得します.このトピックで現在 NavDestination
にアクセスします.では. ネストされたナビゲーションを使用している場合は、必ず hierarchy
ヘルパーメソッドを使用して、プロジェクトのパスと現在のターゲットとその親ターゲットのパスを比較します. BottomNavigationItem
の選択したステータスを表示できます.このオブジェクトが提供するライフサイクル、viewModel、SaveStateは、バックグラウンドスタック内のターゲットのライフサイクルと同じです.
val navController = rememberNavController()
Scaffold(
bottomBar = {
BottomNavigation {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
items.forEach { screen ->
BottomNavigationItem(
icon = { Icon(Icons.Filled.Favorite, contentDescription = null) },
label = { Text(stringResource(screen.resourceId)) },
selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true,
onClick = {
navController.navigate(screen.route) {
// Pop up to the start destination of the graph to
// avoid building up a large stack of destinations
// on the back stack as users select items
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
// Avoid multiple copies of the same destination when
// reselecting the same item
launchSingleTop = true
// Restore state when reselecting a previously selected item
restoreState = true
}
}
)
}
}
}
) { innerPadding ->
NavHost(navController, startDestination = Screen.Profile.route, Modifier.padding(innerPadding)) {
composable(Screen.Profile.route) { Profile(navController) }
composable(Screen.FriendsList.route) { FriendsList(navController) }
}
}
Reference
この問題について(义齿), 我々は、より多くの情報をここで見つけました https://velog.io/@silmxmail/navigation-이동-Jetpack-composeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol