startActivityForResult(intent,3021)
我使用这个方法已经很长时间了,现在这个方法已经被弃用了吗?
确实已经被弃用了。我试图找出新的方法,并且想在这里分享一下。
现在,我们可以使用registerForActivityResult
来为每个回调单独注册,而不是覆盖所有回调并检查请求代码。该函数接受一个ActivityResultContracts
参数。在我看来,这比以前的方法更好。
这里是一个启动带返回结果的Activity的例子:
val previewRequest =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val list = it.data
// do whatever with the data in the callback
}
}
现在我们不再使用StartActivityForResult
,而是使用
val intent = Intent(this, PreviewFullscreenActivity::class.java)
intent.putStringArrayListExtra(AppConstants.PARAMS.IMAGE_URIS, list)
previewRequest.launch(intent)
虽然在所有API级别上,Activity类上都提供了底层的startActivityForResult()和onActivityResult() API,但强烈建议使用AndroidX Activity 1.2.0-alpha02和Fragment 1.3.0-alpha02中引入的Activity Result APIs。
使用registerForActivityResult()
。 - Lalit FauzdarActivity
上它并没有被弃用(https://developer.android.com/reference/android/app/Activity#startActivityForResult(android.content.Intent,%20int))。在AndroidX版的`Fragment`上它已经被弃用,但替代方案(Activity Result APIs)还需要几个月才能稳定。 - CommonsWare