如何停止JetPack组合导航,每次点击两次可综合的综合作用以及为什么
我已经创建了一个JetPack组合导航,如下所示:
val navController = rememberNavController()
Scaffold(
bottomBar = { /* BottomBar code here */ }
){ innerPadding ->
NavHost(
navController = navController,
startDestination = "navigation",
modifier = Modifier.padding(innerPadding)
){
composable("home") { Log.d(TAG, "Show home screen") }
composable("account") { Log.d(TAG, "Show account screen") }
composable("settings") { Log.d(TAG, "Show settings screen") }
}
}
我的问题是,当我单击导航项目时,composable()
函数上的日志消息在logcat中每次单击两次。我可能错过了文档上的一些东西。为什么发生这种情况&我该如何修复?
I have created a Jetpack compose navigation as follows:
val navController = rememberNavController()
Scaffold(
bottomBar = { /* BottomBar code here */ }
){ innerPadding ->
NavHost(
navController = navController,
startDestination = "navigation",
modifier = Modifier.padding(innerPadding)
){
composable("home") { Log.d(TAG, "Show home screen") }
composable("account") { Log.d(TAG, "Show account screen") }
composable("settings") { Log.d(TAG, "Show settings screen") }
}
}
My problem is when ever I click on a nav item, the log message on the composable()
function is printed twice per click in logcat. I may have missed something on the documentation. Why is this happening & how can I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您处于典型情况下,副作用。在此处查看使用重新组件的撰写文档:
https://developer.android.com/jetroid.com/jetroid.com/jetpose/jetpack/jetpack/compose/compose/mental-model#并行
基于您的代码,如果您想在单击“显示帐户按钮”时显示一次调试日志:
您还可以将日志放入您的“ onclick”函数中。
You are in a typical case with side effects. Check compose documentation with the recomposition here :
https://developer.android.com/jetpack/compose/mental-model#parallel
Based on your code, if you want to display the debug log once when click on the "Display account button" :
You can also put the log in your "onClick" function.
我遇到了同样的问题,然后使用 navoptions
I had the same problem and I cal solve it using NavOptions