gpt4 book ai didi

android - Jetpack 撰写 : Launch ActivityResultContract request from Composable function

转载 作者:行者123 更新时间:2023-12-04 10:02:32 25 4
gpt4 key购买 nike

截至1.2.0-beta01androidx.activity:activity-ktx ,不能再launch使用 Activity.registerForActivityResult() 创建的请求,如上面“行为更改”下的链接中突出显示的,在 Google issue here 中可以看到.
应用程序应如何通过 @Composable 启动此请求?现在起作用了吗?以前,应用程序可以传递 MainActivity 的实例。通过使用 Ambient然后轻松启动请求。
可以通过以下方式解决新行为,例如,在 Activity 的 onCreate 之外实例化后,将注册 Activity 结果的类沿链传递。函数,然后在 Composable 中启动请求.但是,无法通过这种方式注册要在完成后执行的回调。
可以通过创建自定义 ActivityResultContract 来解决此问题。 ,它在启动时进行回调。然而,这意味着几乎没有内置的 ActivityResultContracts可以与 Jetpack Compose 一起使用。
TL;DR
应用程序如何启动 ActivityResultsContract来自 @Composable 的请求功能?

最佳答案

截至androidx.activity:activity-compose:1.3.0-alpha06 , registerForActivityResult() API 已重命名为 rememberLauncherForActivityResult()以更好地指示返回的 ActivityResultLauncher是代表您记住的托管对象。

val result = remember { mutableStateOf<Bitmap?>(null) }
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.TakePicturePreview()) {
result.value = it
}

Button(onClick = { launcher.launch() }) {
Text(text = "Take a picture")
}

result.value?.let { image ->
Image(image.asImageBitmap(), null, modifier = Modifier.fillMaxWidth())
}

关于android - Jetpack 撰写 : Launch ActivityResultContract request from Composable function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64721218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com