2017-11-10 175 views
5

bu iki Google ile Oturum Açma fonksiyonları geçersiz kılma ediyorum: google bağlantı başarısız olursaKotlin - geçersiz kılınan yöntemde IllegalArgumentException KOTLIN yılında

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

kontrol etmek.

sorun olduğunu bazen, etkinlik bu biri gibi

başlatılır açılan kullanıcı hesaplarını içeren iletişim kutusunu kapatmak zaman: Ben bir alıyorum

dialog

ÖLÜMCÜL İSTİSNA: aşağıdaki logCat

E/AndroidRuntime ile IllegalArgumentException ana Süreci: com .dancam.subscriptions, PID: 6346 java.lang.RuntimeException: Arıza teslimi sonucu ResultInfo {who = null, request = 6783, sonuç = 0, data = null} etkinliğe {com.dancam.subscriptions/com.dancam.subscriptions .ActiveSubscriptions.Subscriptions_main}: java.lang.IllegalArgumentException: non-null olarak belirtilen parametre null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, android.app.ActivityThread parametresindeki parametre verileri (ActivityThread.java:4126) android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1552) de android.app.ActivityThread.-wrap20 (ActivityThread.java) de android.app.ActivityThread.handleSendResult (ActivityThread.java:4169) de android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6186) java.lang.reflect.Method.invoke adresinde (Yerel Yöntem) com.android şirketinde .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779) Nedeniyle: java.lang.IllegalArgumentException: Parametre olarak belirtildi non-null is null: yöntem kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main.onActivityResult (Subscriptions_main.kt: 0) adresindeki parametre verileri , android.app.Activity.dispatchActivityResult (Etkinlik) .java: 6937) at android.app.ActivityThread.deliverResults (ActivityThr) ead.java:4122) android.app.ActivityThread.handleSendResult (ActivityThread.java:4169) 'da , android.app.ActivityThread.-wrap20 (ActivityThread.java) adresinde , android.app.ActivityThread $ H.handleMessage (ActivityThread)' da .java: 1552) android.os.Handler.dispatchMessage'da (Handler.java:102) , android.os.Looper.loop'da (Looper.java:154) , android.app.ActivityThread.main (ActivityThread.java adresinde) : 6186) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:889) at com.android.internal.os adresindeki java.lang.reflect.Method.invoke (Yerel Yöntem) adresindeki . ZygoteInit.main (ZygoteInit.java:779)

, onActivityResult işlevine işaret eder.

Ben

requestCode: Int? 

için

requestCode: Int 

değişen çalıştı Ama işlevi üst sınıfı olan dan biri olarak aynı değildir, çünkü o zaman ben açıkçası bir hata alıyorum.

Nasıl düzeltebilirim?

cevap

7

Eğer eylem iptal edilir veya hiç sonuç

Başarısızlık gönderildiği data niyet null olabilir çünkü böylece data: Intent? yapmak null olarak data bahsetmek gerekir teslim sonuç = ResultInfo {null, istek = 6.783, sonuç = 0, etkinlik Parametre data=null} non-null is null olarak belirtilen:

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

T hanks, bu işe yaradı, hala benim Kotlin'de bu boş olmayan şeyler etrafında kafamı almalıyım :) – Daniele

+0

@Daniele Yardımcı olabileceğime sevindim ve devam etmene çok sevindim, çok yakında alışırsın. –