【发布时间】:2022-12-15 10:48:28
【问题描述】:
我运行代码 A 并得到结果 A。
你会发现当系统调用Log.e("my", "Load $temp ${refresh.value}")时var temp总是1,即使我一次又一次地点击按钮。
你知道 var temp 是用 remember 包装的,我在 Button 的 onClick 事件中为它分配了 2。
我的代码有什么问题?
顺便说一句,如果你运行代码 B,它会像我预期的那样得到结果 B!
代码A
var temp = remember { 1 }
val refresh = remember { mutableStateOf(100) }
Log.e("my", "Load $temp ${refresh.value}")
Button(
onClick = {
temp++
refresh.value++
Log.e("my", "Save $temp ${refresh.value}")
}
) {
Text("OK $temp ${refresh.value}")
}
结果A
2022-08-29 11:05:36.825 29337-29337/info.dodata.soundmeter E/my: Load 1 100
2022-08-29 11:05:37.550 29337-29337/info.dodata.soundmeter E/my: Load 1 100
2022-08-29 11:05:39.596 29337-29337/info.dodata.soundmeter E/my: Save 2 101
2022-08-29 11:05:39.600 29337-29337/info.dodata.soundmeter E/my: Load 1 101
2022-08-29 11:05:43.274 29337-29337/info.dodata.soundmeter E/my: Save 2 102
2022-08-29 11:05:43.278 29337-29337/info.dodata.soundmeter E/my: Load 1 102
2022-08-29 11:05:52.068 29337-29337/info.dodata.soundmeter E/my: Save 2 103
2022-08-29 11:05:52.071 29337-29337/info.dodata.soundmeter E/my: Load 1 103
2022-08-29 11:05:58.509 29337-29337/info.dodata.soundmeter E/my: Save 2 104
2022-08-29 11:05:58.511 29337-29337/info.dodata.soundmeter E/my: Load 1 104
代码B
var temp = remember { 1 }
val refresh = remember { mutableStateOf(100) }
//Log.e("my", "Load $temp ${refresh.value}") //I remove it
Button(
onClick = {
temp++
refresh.value++
Log.e("my", "Save $temp ${refresh.value}")
}
) {
Text("OK $temp ${refresh.value}")
}
结果B
2022-08-29 11:13:30.624 31545-31545/info.dodata.soundmeter E/my: Save 2 101
2022-08-29 11:13:31.750 31545-31545/info.dodata.soundmeter E/my: Save 3 102
2022-08-29 11:13:33.003 31545-31545/info.dodata.soundmeter E/my: Save 4 103
2022-08-29 11:13:38.993 31545-31545/info.dodata.soundmeter E/my: Save 5 104
2022-08-29 11:13:40.158 31545-31545/info.dodata.soundmeter E/my: Save 6 105
【问题讨论】:
-
您需要将您的临时工置于一种状态,例如您的刷新状态。
-
谢谢!但是我把
temp换成了remember,你可以看到代码B。 -
我没有看到代码 A 和 B 之间有任何区别。
-
代码 A 包含
Log.e("my", "Load $temp ${refresh.value}") -
那么,删除日志后,代码是否按预期工作?
标签: android android-jetpack-compose