我想构建一个非常简单的演示。一个可以点击的按钮,它计算点击次数。
代码如下:
class MainActivity : ComponentActivity() {
private var clicks = mutableStateOf(0)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Surface(color = MaterialTheme.colors.background) {
NewsStory(clicks.value) { onClick() }
}
}
}
private fun onClick() {
clicks.value++
}
}
@Composable
fun NewsStory(clicks: Int, onClick: () -> Unit) {
Column(modifier = Modifier.padding(8.dp)) {
Button(onClick = onClick) {
Text("Clicked: $clicks")
}
}
}
根据我的理解,每次点击按钮时都应该重新组合,因为 clicks
已更改。
但它不起作用,有什么想法我在这里做错了吗?
我正在使用 androidx.activity:activity-compose:1.3.0-beta01
,kotlin 1.5.10 并编写版本 1.0.0-beta08
答案 0 :(得分:1)
每次都需要使用“remember”关键字进行重组,如下所述:https://foso.github.io/Jetpack-Compose-Playground/general/state/
简而言之,你的可组合看起来像这样:
@Composable
fun NewsStory (){
val clickState = remember { mutableStateOf(0) }
Column (modifier = Modifier.padding(8.dp)) {
Button(
onClick = { clickState.value++ }) {
}
Text("Clicked: $clickState.value.toString()")
}
}
答案 1 :(得分:0)
代码应该可以工作,尝试清理您的项目并重建它。