如何在 Compose Glance 小部件的 onClick 上显示吐司?

How to have a toast show on an onClick in a Compose Glance widget?

我喜欢用任何 hello world app/UI 做的第一件事就是弹出或吐司。

Glance 中的侦听器似乎相当限于一组操作类型。如何在点击时显示吐司之类的简单内容?

启动服务和服务本身的Toast是唯一的解决方案吗?

您可以使用 actionRunCallback 并通过切换到主线程在操作中显示 toast。


Button(
    text = "Show toast",
    onClick = actionRunCallback<ToastAction>()
)

class ToastAction : ActionCallback {
    override suspend fun onRun(context: Context, glanceId: GlanceId, parameters: ActionParameters) {
        Handler(context.mainLooper).post { 
            Toast.makeText(context, "My toast", Toast.LENGTH_SHORT).show()
        }
    }
}

注意:Toast 在 Android-12 中是有限的,而不是劝阻,但对于测试应用程序可能就足够了。