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