@composable 调用只能在@composable 函数的上下文中发生
@composable invocations can only happen from the context of an @composable function
我试图在单击工具栏操作时显示 toast 消息,但出现此错误
@composable invocations can only happen from the context of an
@composable function
代码:
@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
参数不接受可组合函数。
删除 showMessage
.
中的 @Composable
注释
使用类似:
@Composable
fun Toolbar() {
val context = LocalContext.current
TopAppBar(title = {},
actions = {
IconButton(onClick = {
showMessage(context, message = "test")
}){}
})
}
fun showMessage(context: Context, message:String){
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
我遇到了同样的错误,我的解决方案是在传递另一个可组合函数的方法中向参数添加 @Composable
注释。
示例:
navigationIcon: @Composable () -> Unit
你的意思是这样的?
@Composable
fun MyTopAppBar(
title: String,
actionItem: TopBarActionItem,
navigationClick: (@Composable () -> Unit)? = null) {}
如何调用 navigationClick?
invoke()
方法本身不可组合,再次出现错误。
你不能使用navigationClick?.invoke()
我试图在单击工具栏操作时显示 toast 消息,但出现此错误
@composable invocations can only happen from the context of an @composable function
代码:
@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
参数不接受可组合函数。
删除 showMessage
.
中的 @Composable
注释
使用类似:
@Composable
fun Toolbar() {
val context = LocalContext.current
TopAppBar(title = {},
actions = {
IconButton(onClick = {
showMessage(context, message = "test")
}){}
})
}
fun showMessage(context: Context, message:String){
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
我遇到了同样的错误,我的解决方案是在传递另一个可组合函数的方法中向参数添加 @Composable
注释。
示例:
navigationIcon: @Composable () -> Unit
你的意思是这样的?
@Composable
fun MyTopAppBar(
title: String,
actionItem: TopBarActionItem,
navigationClick: (@Composable () -> Unit)? = null) {}
如何调用 navigationClick?
invoke()
方法本身不可组合,再次出现错误。
你不能使用navigationClick?.invoke()