2017-11-10 14 views
5

私はこの2 Googleは、サインイン機能をオーバーライドしています:Kotlin - オーバーライドされたメソッドではIllegalArgumentException Kotlinで

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

E/AndroidRuntimeとIllegalArgumentException主 プロセス:COM .dancam.subscriptions、PID:6346 java.lang.RuntimeException:結果の配信に失敗しました。アクティビティ{com.dancam.subscriptions/com.dancam.subscriptionsにResultInfo {who = null、request = 6783、result = 0、data = null} .ActiveSubscriptions.Subscriptions_main}:java.lang.IllegalArgumentException:非nullとして指定されたパラメータがnullの場合:メソッドkotlin.jvm.internal.Intrinsics.checkParameterIsNotNull、パラメータdata android.app.ActivityThread.deliverResults(ActivityThread.java:4126) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1552)でandroid.app.ActivityThread.-wrap20(ActivityThread.java) でandroid.app.ActivityThread.handleSendResult(ActivityThread.java:4169) で android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) android.app.ActivityThread.main(ActivityThread.java:6186) at 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、パラメータデータ at com.dancam.subscriptions.ActiveSubscriptions.Subscriptions_main.onActivityResult(Subscriptions_main.kt:0) android.app.Activity.dispatchActivityResult(Activity .java:6937) android.app.ActivityThread.deliverResults(ActivityThr android.app.ActivityThread.-wrap20でandroid.app.ActivityThread.handleSendResult(ActivityThread.java:4169) でead.java:4122) (android.app.ActivityThread $ H.handleMessageでActivityThread.java) (ActivityThread .java:1552) とandroid.os.Handler.dispatchMessage(Handler.java:102) (android.os.Looper.loop(Looper.java:154)) at android.app.ActivityThread.main(ActivityThread.java :6186) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:779)

は、onActivityResultファンクションを指します。

私は

requestCode: Int? 

requestCode: Int 

を変更しようとしたが、機能はそれのスーパークラスからのものと同じではないので、私は明らかにエラーが発生します。

どうすれば修正できますか?

答えて

7

はあなたがアクションがキャンセルされるか、何も結果が

失敗を送信されなかったときdata意図はnullにすることができるので、これdata: Intent?を行うnullとしてdataを言及する必要が提供する結果= ResultInfo {nullで、要求= 6783、結果=

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

T:non-null is nullとして指定されたアクティビティパラメータに0、 data=null}ハンクス、これは働いて、まだKotlinでこの非ヌルのものの周りに私の頭を得なければならない:) – Daniele

+0

@ダニエル私は助けて、ちょうど行くつもりだとうれしいです、あなたはすぐにそれに慣れるだろう。 –

関連する問題