未能在活动结果上交付结果

Moh*_*fiz 13 kotlin onactivityresult

下面是来自相机的示例代码意图:

val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(intent, REQUEST_CAMERA)
Run Code Online (Sandbox Code Playgroud)

注意:当我从相机按回来时,活动结果显示如下:

java.lang.RuntimeException:将结果ResultInfo {who = null,request = 65537,result = 0,data = null}传递给activity并且失败:java.lang.IllegalArgumentException:指定为非null的参数为null:

试着找出这样的解决方案:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { 
           try {
                when(resultCode){
                    Activity.RESULT_CANCELED -> {
                        System.out.println("nothing")
                    }
                    Activity.RESULT_OK -> {
                        if (requestCode == SELECT_FILE)
                            onSelectFromGalleryResult(data)
                        else if (requestCode == REQUEST_CAMERA)
                            onCaptureImageResult(data)
                    }
                }
            }catch (e:NullPointerException){
                e.printStackTrace()
            }
}
Run Code Online (Sandbox Code Playgroud)

仍然没有解决问题,因为当我做debuging日志时它不会出现在func onactivityresult如果我按下从相机返回而不捕获图像.从画廊工作中拍摄照片和拾取图像就像魅力一样.

谢谢.请帮助我解决这个问题,因为一路上解决方案不能正常工作.似乎谷歌必须覆盖有趣的onresultactivity(结果代码!!:Int)< - 这个应该返回非null.

NSi*_*mon 26

你不应该覆盖这个吗?

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
    }
Run Code Online (Sandbox Code Playgroud)


AaR*_*RiF 18

我使用kotlin在我的应用程序中实现PayPal支付网关时遇到了同样的问题.你只需要添加使用Intent in onActivityResult,如果数据为null或出现任何错误,则数据可以为null.所以我们需要将数据定义为可空的onActivityResult

只需onActivityResult用以下内容替换SomeActivity的签名即可:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
Run Code Online (Sandbox Code Playgroud)

  • 对.新的转换器kotlin出了问题. (3认同)