Kotlin – IllegalArgumentException в переопределенном методе

В Котлине я переопределяю эти две функции входа в 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() } } } 

чтобы проверить, не связано ли соединение с Google.

Проблема в том, что иногда, когда я увольняю диалоговое окно с учетными записями пользователей, которое всплывает при запуске этой активности

Как этот:

диалог

Я получаю исключение IllegalArgumentException со следующим логарифмом

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.dancam.subscriptions, PID: 6346 java.lang.RuntimeException: Не удалось доставить результат ResultInfo {who = null, request = 6783, result = 0, data = null} в действие {com .dancam.subscriptions / com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main}: java.lang.IllegalArgumentException: параметр, указанный как non-null, равен null: method 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) в 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: метод 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) в java. lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) при c om.android.internal.os.ZygoteInit.main (ZygoteInit.java:779)

что указывает на функцию onActivityResult .

Я попытался изменить

 requestCode: Int 

в

 requestCode: Int? 

Но тогда я, очевидно, получаю сообщение об ошибке, потому что функция не такая же, как у суперкласса.

Как я могу это исправить?

    вам нужно указать data как null так что data: Intent? поскольку намерение data может быть null когда действие отменено или результат не был отправлен

    Ошибка отправки результата ResultInfo {who = null, request = 6783, result = 0, data=null } в действие Параметр, заданный как non-null is null :

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