@Composable
fun MyButton() {
Button(onClick = {
//enter code here
})
}
LocalUriHandler
:
val uriHandler = LocalUriHandler.current
uriHandler.openUri(uri)
保持简短而甜蜜😊
@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!")
}
}
在 @Composable 函数内部,有一个叫做“组合局部变量”CompositionLocal 类允许通过可组合函数隐式地将数据传递给其可组合后代
LocalContext 就是这些类之一。 指定的Intent,是Android上打开外部URL的常用方式。
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
}
}
,这是在手机浏览器中打开链接的另一种可能性。
// Within your @Composable function define the context val
val context = LocalContext.current
//Then in your modifier clickable use the CustomTabsIntent builder
modifier = Modifier
.padding(start = 24.dp, end = 16.dp)
.align(Alignment.CenterVertically)
.clickable {
CustomTabsIntent.Builder().build().launchUrl(context, Uri.parse(pageUrl))
}