首页 > 解决方案 > Android:如果 onActivityResult 在多个活动中被覆盖,如何处理?

问题描述

在一个名为 A 的活动中,它有 startActivityForResult(),这个活动只是打开我的照片库并选择一个图像。在同一个活动 A 中,它覆盖 onActivityResult 以抓取选定的图像。

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

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

标签: javaandroidkotlinonactivityresult

解决方案


requestCode正是为此而推出的。requestCode在开始活动时,您总是需要传递 a以获得结果:

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)
    }
}

推荐阅读