下面是来自相机的示例代码意图:
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, REQUEST_CAMERA)
注意:当我从相机按回来时,活动结果显示如下:
java.lang.RuntimeException:将结果ResultInfo {who = null,request = 65537,result = 0,data = null}传递给活动失败 和引起: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()
}
}
仍然没有解决问题,因为当我做debuging日志它不会出现在func onactivityresult如果我去按下从相机返回而不捕获图像。从画廊中拍摄照片和拾取图像就像魅力一样。
谢谢。请帮助我解决这个问题,因为一路上解决方案没有工作。好像谷歌必须覆盖有趣的onresultactivity(resultcode !!:Int)< - 这个应该返回非null。
答案 0 :(得分:24)
你不应该改写它吗?
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
答案 1 :(得分:18)
我在使用kotlin在我的应用中实现PayPal支付网关时遇到了同样的问题。您只需要在onActivityResult
中添加带有Intent的?,因为如果数据为空或出现任何问题,数据可以为null。因此,我们需要在onActivityResult
只需用以下内容替换SomeActivity的onActivityResult
签名:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)