Android Kotlin-重写方法中的IllegalArgumentException

Android Kotlin-重写方法中的IllegalArgumentException,android,kotlin,illegalargumentexception,Android,Kotlin,Illegalargumentexception,在Kotlin中,我将覆盖这两个Google登录功能: override fun onConnectionFailed(result: ConnectionResult) { if (result.hasResolution()) { try { result.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE) } catch

在Kotlin中,我将覆盖这两个Google登录功能:

override fun onConnectionFailed(result: ConnectionResult) {
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE)
            } catch (e: IntentSender.SendIntentException) {
                // Unable to resolve, message user appropriately
            }

        } else {
            val gaa = GoogleApiAvailability.getInstance()
            gaa.getErrorDialog(this, result.errorCode, 0)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        when (requestCode) {
            RESOLVE_CONNECTION_REQUEST_CODE -> if (resultCode == Activity.RESULT_OK) {
                mGoogleApiClient!!.connect()
            }
        }
    }
检查与谷歌的连接是否失败

问题是,有时,当我关闭包含用户帐户的对话框时,该对话框会在活动启动时弹出

像这个:

我得到了一个带有以下日志的
IllegalArgumentException

E/AndroidRuntime:致命异常:主 进程:com.dancam.subscriptions,PID:6346 java.lang.RuntimeException:将结果ResultInfo{who=null,request=6783,result=0,data=null}传递到活动{com.dancam.subscriptions/com.dancam.subscriptions.ActiveSubscriptions\u main}失败:java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParametersNotNull,参数数据 位于android.app.ActivityThread.deliverResults(ActivityThread.java:4126) 位于android.app.ActivityThread.handleSendResult(ActivityThread.java:4169) 位于android.app.ActivityThread.-wrap20(ActivityThread.java) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1552)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6186) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 原因:java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParametersNotNull,参数数据 在com.dancam.subscriptions.ActiveSubscriptions.subscriptions\u main.onActivityResult上(subscriptions\u main.kt:0) 位于android.app.Activity.dispatchActivityResult(Activity.java:6937) 位于android.app.ActivityThread.deliverResults(ActivityThread.java:4122) 位于android.app.ActivityThread.handleSendResult(ActivityThread.java:4169) 位于android.app.ActivityThread.-wrap20(ActivityThread.java) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1552)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6186) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

指向onActivityResult的
函数

我试着换衣服

requestCode: Int

但是我显然得到了一个错误,因为这个函数与它的超类中的函数不同


如何修复它?

您需要将
数据
称为
也可以这样做
数据:意图?
因为
数据
意图在取消操作或未发送结果时可以

未能传递结果ResultInfo{who=null,request=6783,result=0,
data=null
}到指定为
非null的活动参数为null


谢谢,这一切都成功了,我还得想一想Kotlin中的非空元素:)@Daniele我很高兴我能帮上忙,只要继续,你很快就会习惯的。谢谢!在关闭排行榜窗口后出现同样的问题。也谢谢!。这不仅帮助我解决了问题,而且帮助我理解了错误
requestCode: Int?
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//                                                                           ^^