2017-11-10 8 views
5

Kotlin में मैं अधिभावी कर रहा हूँ इस दो Google साइन-इन कार्य: यदि गूगल के लिए कनेक्शन विफल रहता हैKotlin - ओवरराइड विधि में IllegalArgumentException

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

ई/AndroidRuntime साथ IllegalArgumentException मुख्य प्रक्रिया: कॉम .dancam.subscriptions, पीआईडी: 6346 java.lang.RuntimeException: परिणाम देने में विफलता ResultInfo {who = null, request = 6783, परिणाम = 0, डेटा = null} गतिविधि {com.dancam.subscriptions/com.dancam.subscriptions .ActiveSubscriptions.Subscriptions_main}: java.lang.IllegalArgumentException: गैर-शून्य के रूप में निर्दिष्ट पैरामीटर शून्य है: विधि kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, पैरामीटर डेटा android.app.ActivityThread.deliverResults (ActivityThread.java:4126) पर android.app.ActivityThread.-wrap20 (ActivityThread.java) android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1552) पर पर android.app.ActivityThread.handleSendResult (ActivityThread.java:4169) पर android.os.Handler.dispatchMessage (हैंडलर.जावा: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: पैरामीटर निर्दिष्ट गैर-शून्य शून्य है: विधि kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, पैरामीटर डेटा com.dancam.subscriptions.Active सदस्यताएं। सदस्यताएं_main.onActivityResult (सदस्यताएं_main.kt: 0) atroid.app.Activity.dispatchActivityResult (गतिविधि .java: 6937) atroid.app.ActivityThread.deliverResults (ActivityThr ead.java:4122) atroid.app.ActivityThread.handleSendResult (ActivityThread.java:4169) atroid.app.ActivityThread.-wrap20 (ActivityThread.java) atroid.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1552) atroid.os.Handler.dispatchMessage (हैंडलर.जावा:102) atroid.os.Looper.loop (Looper.java:154) atroid.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)

जो onActivityResult फ़ंक्शन पर इंगित करता है।

मैं

requestCode: Int? 

को

requestCode: Int 

बदल रहा करने की कोशिश की लेकिन तब मैं स्पष्ट रूप से, क्योंकि समारोह भी इसे सुपर क्लास है से के समान नहीं है कोई त्रुटि मिलती है।

मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

7

तुम इतनी data: Intent? करते हैं, क्योंकि data आशय null हो सकता है जब कार्रवाई रोक दी गई है या कोई परिणाम

विफलता भेजा गया था datanull के रूप में उल्लेख करने की जरूरत है पहुंचाने परिणाम ResultInfo {जो = अशक्त, अनुरोध = 6783, परिणाम = 0, data=null} गतिविधि पैरामीटर को non-null is null के रूप में निर्दिष्ट:

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

टी हैंक्स, यह काम करता है, अभी भी कोटलिन में इस गैर-शून्य सामग्री के आसपास अपना सिर प्राप्त करना होगा :) – Daniele

+0

@ डैनियल मुझे खुशी है कि मैं मदद कर सकता हूं और बस चल रहा हूं, आप इसे जल्द ही उपयोग करेंगे। –

संबंधित मुद्दे