Kotlin - 重写方法

时间:2017-11-10 15:22:23

标签: android kotlin illegalargumentexception

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

检查与谷歌的连接是否失败。

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

喜欢这个:

dialog

我正在使用以下logcat获得IllegalArgumentException

  

E / AndroidRuntime:致命异常:主要                     处理:com.dancam.subscriptions,PID:6346                     java.lang.RuntimeException:将结果ResultInfo {who = null,request = 6783,result = 0,data = null}传递给activity {com.dancam.subscriptions / com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main}:java.lang .IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数数据                         在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)                         at java.lang.reflect.Method.invoke(Native Method)                         在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.checkParameterIsNotNull,参数数据                         在com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main.onActivityResult(Subscriptions_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)                         at java.lang.reflect.Method.invoke(Native Method)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:889)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

指向onActivityResult函数。

我尝试过更改

requestCode: Int

requestCode: Int?

但后来我显然得到一个错误,因为该函数与它的超类中的函数不同。

我该如何解决?

1 个答案:

答案 0 :(得分:17)

您需要提及data nulldata: Intent?因为data意图可以null取消操作或未发送结果

  

未能提供结果ResultInfo {who = null,request = 6783,result = 0,   data=null} to activity参数指定为non-null is null

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//                                                                           ^^