android - Jetpack Compose 添加 onClick 将重新组合

标签 android kotlin android-jetpack-compose android-jetpack-navigation

我的代码

@Composable
fun AlbumPage(navHostController: NavHostController) {
   ElevatedButton(onClick = {
      navHostController.popBackStack()
   }) {
      Text(text = "click")
   }

   SideEffect {
        Log.d("tag","1111")
   }
}

当我在 onClick{} 中设置 navHostController.popBackStack() 时,日志显示两次

14:53:34.452 D 1111

14:53:34.816 D 1111

我删除了 navHostController.popBackStack()

@Composable
fun AlbumPage(navHostController: NavHostController) {
   ElevatedButton(onClick = {
      //navHostController.popBackStack()
   }) {
      Text(text = "click")
   }

   SideEffect {
        Log.d("tag","1111")
   }
}

登录一次

为什么?

最佳答案

源文件说明NavHostController.kt

When the given navController
 * changes the back stack due to a [NavController.navigate] or [NavController.popBackStack] this
 * will trigger a recompose and return the top entry on the back stack.
 *
 * @return a mutable state of the current back stack entry

关于android - Jetpack Compose 添加 onClick 将重新组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74929627/

相关文章:

android - 在 Jetpack Compose 中重置可拖动项目的偏移动画

android - 嵌套滚动 Jetpack Compose

android - 在主线程上改造回调

java - 无论尺寸如何,如何使图像适合屏幕?

Android 绑定(bind)适配器不适用于 CustomView

intellij-idea - 安装 IntelliJ IDEA 后从控制台运行一个简单的 hello world

generics - 使用泛型的类型别名类型的构造函数

android - 我是否可以更新 StateFlow 中的列表(并更改 Compose View ),而无需手动生成新列表,而只需修改列表中的一个值?

java - 如何在Android中使用内部布局?

java - 如何通过 JNI 将结构从 C 传回 Java