startActivityForResult(android.content.Intent, int)' 已弃用

ice*_*rit 8 android kotlin

startActivityForResult(intent,3021) 
Run Code Online (Sandbox Code Playgroud)

我用了很长时间了,现在不推荐使用这种方法了吗?

fre*_*yle 6

它确实已被弃用。我试图找出新的出路,并认为我会在这里分享。

现在,不是覆盖onActivityResult所有回调并检查我们的请求代码,我们可以通过使用registerForActivityResultwhich来分别注册每个回调ActivityResultContracts。IMO 这是一种比以前更好的方法。

以下是为结果启动活动的示例:

val previewRequest =
           registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val list = it.data
        // do whatever with the data in the callback
    }
}
Run Code Online (Sandbox Code Playgroud)

现在代替StartActivityForResult我们使用

val intent = Intent(this, PreviewFullscreenActivity::class.java)
intent.putStringArrayListExtra(AppConstants.PARAMS.IMAGE_URIS, list)
previewRequest.launch(intent)
Run Code Online (Sandbox Code Playgroud)