Android: onActivityResult在多个Activity中被重写怎么处理?

Android: How to handle onActivityResult if it's overridden in multiple activitys?

在一个叫做 A 的 activity 中,它有 startActivityForResult(),这个 activity 就是打开我的照片库并选择一张图片。在同一个 activity A 中,它会覆盖 onActivityResult 以获取所选图像。

但是,我有另一个名为 B 的 activity,它恰好也覆盖了 onActivityResult 并且似乎 activity B 消耗了该结果并且由于这个问题 activity A 从未得到结果。

在不删除 B 中的 onActivityResult 的情况下,我可以做些什么来让结果转到 activity A 而不是 activity B?

requestCode正是由于这个原因引入的。 在为结果启动 activity 时始终需要传递 requestCode

val selectImageIntent = /* some intent to select an image */
startActivityForResult(selectImageIntent, REQUEST_CODE_SELECTED_IMAGE)

您可以使用它来确定此结果是否适合您:

private val REQUEST_CODE_SELECTED_IMAGE = 1000 
private val REQUEST_CODE_CAMERA = 2000 

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    
    if(requestCode == REQUEST_CODE_SELECTED_IMAGE){
        // Handle the result of REQUEST_CODE_SELECTED_IMAGE
    } else {
        // Let another activity handle the result
        super.onActivityResult(requestCode, resultCode, data)
    }
}