问题描述
当我单击工具栏上的操作时,我试图显示一条吐司消息,但出现此错误
@composable调用只能在以下情况下发生: @composable函数
代码:
@Composable
fun Toolbar() {
TopAppBar(title = { Text(text = "Jetpack Compose") },navigationIcon = {
IconButton(onClick = {}) {
Icon(Icons.Filled.Menu)
}
},actions = {
IconButton(onClick = {
showMessage(message = "test")
}) {
Icon(vectorResource(id = R.drawable.ic_baseline_save_24))
}
})
}
@Preview
@Composable
fun ToolbarPreview(){
Toolbar()
}
@Composable
fun showMessage(message:String){
Toast.makeText(ContextAmbient.current,message,Toast.LENGTH_SHORT).show()
}
解决方法
onClick
参数不接受可组合函数。
删除@Composable
中的showMessage
注释。
使用类似的东西:
@Composable
fun Toolbar() {
val context = ContextAmbient.current
TopAppBar(title = {},actions = {
IconButton(onClick = {
showMessage(context,message = "test")
}){}
})
}
fun showMessage(context: Context,message:String){
Toast.makeText(context,message,Toast.LENGTH_SHORT).show()
}