You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:15:28