Android 未能交付结果ResultInfo继续抛出

Android 未能交付结果ResultInfo继续抛出,android,kotlin,kotlin-android-extensions,Android,Kotlin,Kotlin Android Extensions,我有一个打开相机的活动,但如果相机中有一个,单击“后退”按钮,每次都会出现此错误 Process: com.deraah.mohamed.deraahpro, PID: 13346 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=0, data=null} to activity {com.deraah.mohamed.deraahpro/com.der

我有一个打开相机的活动,但如果相机中有一个,单击“后退”按钮,每次都会出现此错误

Process: com.deraah.mohamed.deraahpro, PID: 13346
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=0, data=null} to activity {com.deraah.mohamed.deraahpro/com.deraah.mohamed.deraahpro.ParticipantsActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4268)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
    at android.app.ActivityThread.-wrap19(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
    at com.deraah.mohamed.deraahpro.ParticipantsActivity.onActivityResult(Unknown Source:37)
未能及时传递结果ResultInfo

这是我的活动
参与者活动

class ParticipantsActivity : AppCompatActivity() {

    private var CAMERA_REQUEST = 1888
    private var imageView: ImageView? = null
    private var MY_CAMERA_PERMISSION_CODE = 100

    @RequiresApi(Build.VERSION_CODES.M)
    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_participants)
        this.imageView = this.findViewById<View>(R.id.imageView1) as ImageView
        val photoButton = this.findViewById(R.id.button1) as Button

        photoButton.setOnClickListener { view ->
            if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(arrayOf(Manifest.permission.CAMERA),
                        MY_CAMERA_PERMISSION_CODE)
            } else {
                val cameraIntent = Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)
                startActivityForResult(cameraIntent, CAMERA_REQUEST)
            }
        }

    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
        if (requestCode == MY_CAMERA_PERMISSION_CODE) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
                val cameraIntent = Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)
                startActivityForResult(cameraIntent, CAMERA_REQUEST)
            } else {
                Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
            }

        }
    }


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        if(data != null){
            if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
                try {

                } catch (e: IOException) {
                    e.printStackTrace()
                }

            }
        }

    }

}
类参与者活动:AppCompativeActivity(){
专用var摄像机\u请求=1888
私有变量imageView:imageView?=null
私有变量MY\u CAMERA\u权限\u代码=100
@RequiresApi(Build.VERSION\u CODES.M)
创建公共覆盖乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_参与者)
this.imageView=this.findViewById(R.id.imageView1)作为imageView
val photoButton=this.findViewById(R.id.button1)作为按钮
photoButton.setOnClickListener{view->
if(checkSelfPermission(Manifest.permission.CAMERA)!=PackageManager.permission\u已授予){
requestPermissions(arrayOf(Manifest.permission.CAMERA),
我的\照相机\许可\代码)
}否则{
val cameraIntent=Intent(android.provider.MediaStore.ACTION\u IMAGE\u CAPTURE)
startActivityForResult(摄像机帐篷、摄像机请求)
}
}
}
重写onRequestPermissionsResult(请求代码:Int,权限:Array,GrantResult:IntArray){
if(requestCode==MY\u摄像机\u权限\u代码){
if(grantResults[0]==已授予PackageManager.权限){
Toast.makeText(这是“授予相机权限”,Toast.LENGTH_LONG.show();
val cameraIntent=Intent(android.provider.MediaStore.ACTION\u IMAGE\u CAPTURE)
startActivityForResult(摄像机帐篷、摄像机请求)
}否则{
Toast.makeText(这是“相机权限被拒绝”,Toast.LENGTH_LONG.show();
}
}
}
覆盖活动结果(请求代码:Int,结果代码:Int,数据:Intent){
如果(数据!=null){
if(requestCode==CAMERA\u请求和&resultCode==Activity.RESULT\u确定){
试一试{
}捕获(e:IOException){
e、 printStackTrace()
}
}
}
}
}
然后应用程序停止工作。

您的代码:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
有一些参数
数据
不应为空,因为它具有类型
意图
(不可为空)

你的错误说明了这一点:

指定为非null的参数为null:。。。参数数据

只需将
data:Intent
更改为
data:Intent?
data
将被指定为可空参数


阅读Kotlin中有关空安全的更多信息:。

尝试更改:
覆盖活动结果的乐趣(requestCode:Int,resultCode:Int,data:Intent){
到:
覆盖活动结果的乐趣(requestCode:Int,resultCode:Int,data:Intent?){
注意
data:Intent?
末尾的问号,您可以通过将Intent更改为Intent进行检查吗?在这一行上覆盖活动结果的乐趣(requestCode:Int,resultCode:Int,data:Intent)是的,它已经完美地工作了+1,下面是与Kotlin中有关空安全性的文档相关的链接,我们是否应该调用super-method?
super.onActivityResult(请求代码、结果代码、数据)