Jetpack Compose中onClick事件Toast不显示问题求助
解决Jetpack Compose中Toast点击不显示的问题
你的Toast无法显示是因为只调用了Toast.makeText()方法,但没有执行show()来触发Toast的显示。
修改MessageCard中的clickable代码即可解决:
@Composable fun MessageCard() { val context = LocalContext.current Card( modifier = Modifier .fillMaxWidth() .padding(8.dp) .clickable { // 补充调用show()方法触发Toast显示 Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show() }, backgroundColor = MaterialTheme.colors.surface.copy(alpha = .5f) ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() .padding(16.dp) ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Text( text = "Title", modifier = Modifier .padding(horizontal = 15.dp) .fillMaxWidth(), style = MaterialTheme.typography.h6, ) Text( text = "Sub title", modifier = Modifier .padding(horizontal = 15.dp) .fillMaxWidth(), style = MaterialTheme.typography.subtitle1 ) } } } }
额外可以做个小优化:给Context写个扩展函数简化Toast调用,避免每次都写完整的makeText和show:
// 全局扩展函数 fun Context.showToast(message: Int, duration: Int = Toast.LENGTH_SHORT) { Toast.makeText(this, message, duration).show() }
之后在Compose里就可以直接写:
.clickable { context.showToast(R.string.app_name) }
内容的提问来源于stack exchange,提问作者1234567
相关产品推荐
相关产品推荐

