我对 Jetpack Compose 比较陌生,我遇到了一个简单的按钮单击未按预期更新数字的问题。我有一个 Counter 可组合项,它采用初始计数值和用于更新计数的 lambda。但是,尽管使用
mutableStateOf
并传递了正确的单击处理程序,但单击按钮时计数似乎并没有增加。
这是我的
MainActivity
代码:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DemoTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
val post by remember {
mutableStateOf(Post())
}
Counter(post.likes) {
post.likes = it + 1
}
}
}
}
}
}
还有
Counter
可组合项:
@Composable
fun Counter(postLikes: Int, onLikeClick: (Int) -> Unit) {
val count = remember { mutableStateOf(postLikes) }
Column(
Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(
onClick = {
onLikeClick(count.value)
}
) {
Text("Click me")
}
Text(text = "Current count: ${count.value}")
}
}
Post
型号:
class Post(){
var title: String = ""
var content: String = ""
var likes = 0
}
这看起来很简单,可以工作,但是单击按钮后计数仍然保持不变。有人可以指出这里可能出了什么问题吗?如有任何帮助,我们将不胜感激。
谢谢!
我尝试使用 Jetpack Compose 实现一个简单的计数器,单击按钮即可增加计数。以下是我采取的关键步骤:
创建了一个 Counter 可组合项,它接受初始计数值和用于计数更新的 lambda。 使用 mutableStateOf 来处理 count 变量的状态。 将此 Counter 可组合项集成到 MainActivity 中,从 Post 实例传递初始计数。 我预计点击按钮会触发 lambda 更新计数,并且 UI 中显示的计数会相应增加。
实际结果如何?
尽管执行了上述步骤,单击按钮并没有导致显示计数增加。计数保持不变,表明状态更新可能未按预期进行。
非常感谢任何见解或建议。谢谢!
postLikes
中的Counter
不需要包含在remember中,因为只有当postLikes
值更新时才会重新组合。只需在 postLikes
可组合中使用
Counter