从 的1.2.0-beta01开始androidx.activity:activity-ktx,不能再launch使用创建的请求Activity.registerForActivityResult(),如上面“行为更改”下的链接中突出显示的那样,并在此处的Google 问题中看到。
应用程序@Composable现在应该如何通过函数启动这个请求?以前,应用程序可以MainActivity通过使用 向下传递链的实例,Ambient然后轻松启动请求。
例如,可以通过以下方式解决新行为:在 Activity 的onCreate函数之外实例化后,将注册活动结果的类传递到链中,然后在Composable. 但是,无法通过这种方式注册完成后要执行的回调。
可以通过创建 custom 来解决这个问题ActivityResultContract,它在启动时接受回调。但是,这意味着几乎没有任何内置功能ActivityResultContracts可以与 Jetpack Compose 一起使用。
TL; 博士
应用程序如何ActivityResultsContract从@Composable函数发起请求?
android android-jetpack android-jetpack-compose registerforactivityresult
我有这样的场景,其中用户单击可组合A中的按钮,然后从可组合B的列表中选择一个项目,并从可组合C的列表中选择另一个项目。
我的问题是,当我从屏幕C选择一个项目时,我想使用我在B和C中选择的内容导航回屏幕A。但是当给出参数时 popBackStack 不起作用。
这是代码,
navController.popBackStack(route = Screen.SelectPlan.route + "?regionId=${region.id}&operatorId=${operator.id}")
Run Code Online (Sandbox Code Playgroud)
现在,我看到 popBackStack 确实采用了路由参数,但将其转换为哈希码以向后导航,而不是创建类似 Uri 的导航函数。