dsh*_*dev 43 android onclick kotlin android-jetpack-compose
如何使用 Jetpack Compose 通过单击按钮以编程方式打开外部 URL?
@Composable
fun MyButton() {
Button(onClick = {
//enter code here
})
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*uke 112
一个更简单的替代方法是使用LocalUriHandler:
val uriHandler = LocalUriHandler.current
uriHandler.openUri(uri)
Run Code Online (Sandbox Code Playgroud)
保持简短而甜蜜
pau*_*aap 24
这是一种可能的方法:
@Composable
fun MyButton() {
val context = LocalContext.current
val intent = remember { Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/")) }
Button(onClick = { context.startActivity(intent) }) {
Text(text = "Navigate to Google!")
}
}
Run Code Online (Sandbox Code Playgroud)
在 @Composable 函数内部,有一个叫做“Composition Locals”的东西。
CompositionLocal 类允许通过可组合函数隐式地将数据传递给其可组合后代
LocalContext 就是这些类之一。指定的 Intent 是 Android 上打开外部 URL 的常用方法。
Kuk*_*won 10
我发现访问处理LocalUriHandler.current程序内部onClick会引发错误:"@Composable invocations can only happen from the context of a @Composable function"
我通过将这行代码移到按钮之外解决了这个问题:
val uriHandler = LocalUriHandler.current
Button(onClick = {
uriHandler.openUri(...)
) {
// Your label goes here
}
Run Code Online (Sandbox Code Playgroud)