在Android开发中,通常使用ActivityResultLauncher来调用另一个Activity并获取返回值。有时可能需要自定义请求代码,以便在返回结果时可以识别处理该结果的来源。
为了传递自定义请求代码,可以使用registerForActivityResult()方法的第一个参数,该参数是一个ActivityResultContract对象。例如,可以创建一个自定义的ProfileContract类,其中定义了自己的请求代码:
class ProfileContract : ActivityResultContract() {
override fun createIntent(context: Context, input: Int?): Intent {
return Intent(context, ProfileActivity::class.java)
.putExtra(EXTRA_REQUEST_CODE, input)
}
override fun parseResult(resultCode: Int, intent: Intent?): Profile? {
return intent?.getParcelableExtra(EXTRA_PROFILE)
}
}
然后,可以使用这个自定义的ProfileContract类来创建一个ActivityResultLauncher,并在调用时指定自定义的请求代码:
val profileLauncher = registerForActivityResult(ProfileContract()) { profile ->
// Handle the result
}
profileLauncher.launch(MY_CUSTOM_REQUEST_CODE)
这样就可以使用自定义请求代码来启动Activity并获取返回结果了。