W Kotlin ja to dwa nadrzędne Google funkcje logowania:Kotlin - IllegalArgumentException w zastąpiona metoda
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()
}
}
}
, by sprawdzić, czy połączenie google zawodzi.
Problem polega na tym, że czasami, kiedy zamknąć okno dialogowe zawierające kont użytkowników, które wyskakujące gdy działalność jest uruchomiony
jak ten:
Otrzymuję IllegalArgumentException
z następującym LogCat
E/Android Runtime: krytyczny wyjątek: główne procesu: pl .dancam.subscriptions, PID: 6346 wyjątek java.lang.RuntimeException: niepowodzenie dostarczania wyniku ResultInfo {who = null, request = 6783, result = 0, data = null} to activity {com.dancam.subscriptions/com.dancam.subscriptions .ActiveSubscriptions.Subscriptions_main}: java.lang.IllegalArgumentException: Parametr określony jako non-null ma wartość null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, dane parametru at android.app.ActivityThread.deliverResults (ActivityThread.java:4126) na android.app.ActivityThread.handleSendResult (ActivityThread.java:4169) na android.app.ActivityThread.-wrap20 (ActivityThread.java) w android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1552) na android.os.Handler.dispatchMessage (Handler.java:102) w android.os.Looper.loop (Looper.java:154) na android.app.ActivityThread.main (ActivityThread.java:6186) na java.lang.reflect.Method.invoke (Metoda natywna) at com.android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) na com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779) Spowodowane przez: java.lang.IllegalArgumentException: Parametr określony jako non-null ma wartość null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, dane parametru at com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main.onActivityResult (Subscriptions_main.kt: 0) at android.app.Activity.dispatchActivityResult (Activity .java: 6937) na android.app.ActivityThread.deliverResults (ActivityThr ead.java:4122) na android.app.ActivityThread.handleSendResult (ActivityThread.java:4169) na android.app.ActivityThread.-wrap20 (ActivityThread.java) na android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1552) na android.os.Handler.dispatchMessage (Handler.java:102) na android.os.Looper.loop (Looper.java:154) na android.app.ActivityThread.main (ActivityThread.java : 6186) w java.lang.reflect.Method.invoke (metoda natywna) na com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) na com.android.internal.os. ZygoteInit.main (ZygoteInit.java:779)
wskazuje to na funkcję onActivityResult
.
Próbowałem zmieniając
requestCode: Int
do
requestCode: Int?
Ale wtedy oczywiście pojawia się błąd, ponieważ funkcja nie jest taka sama jak ta, z To nadklasą.
Jak mogę to naprawić?
T Hanks, to działało, wciąż muszę się rozglądać za tymi niezerowymi rzeczami w Kotlinie :) – Daniele
@Daniele Cieszę się, że mogłem pomóc i po prostu kontynuuję, przyzwyczaisz się już do tego bardzo szybko. –