63 votes

IllegalArgumentException: Paramètre spécifié en tant que non-null, null

J'ai la suite à erreur d'exécution:

 checkParameterIsNotNull, parameter oneClickTokens
    at com.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:0)
    at com.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:1543)

Voici mon code:

 private fun fetchMerchantHashes(intent: Intent) {
    // now make the api call.
    val postParams = "merchant_key=$key&user_credentials=$var1"
    val baseActivityIntent = intent
    object : AsyncTask<Void, Void, HashMap<String, String>>() {

        override fun doInBackground(vararg params: Void): HashMap<String, String>? {
                ...
        }

        override fun onPostExecute(oneClickTokens: HashMap<String, String>) {
            super.onPostExecute(oneClickTokens)
            ...

        }
    }.execute()
}

Il semble que l'appel de la fonction semble être invalide. Cependant, je ne sais pas comment résoudre ce problème. Est-il rien de Kotlin spécifique que j'ai manqué?

112voto

Alexander Romanov Points 5409

L'exception est assez clair: vous êtes en passant null pour le paramètre.

Par défaut, toutes les variables et les paramètres de Kotlin sont non-nulles. Si vous souhaitez passer null paramètre de la méthode, vous devez ajouter ? de ce genre, par exemple:

fun fetchMerchantHashes(intent: Intent?)

Pour plus d'informations: null-sécurité.

4voto

CoolMind Points 11

Dans mon cas, cette erreur a averti au sujet probable en passant une valeur null comme paramètre. Trois façons de correction.

  1. Changer le type d'un paramètre à la place correspondante. Si elle est reçue à partir de Java, ajoutez - @NonNull d'annotation à une définition de variable.
  2. Ajouter !! à un argument de la méthode.
  3. Ajouter ? pour le paramètre dans Kotlin classe. Je pense que, Kotlin outil de conversion peut le faire par défaut, si, dans la classe Java il n'y avait pas d'annotations (par exemple l' @Nullable, @NonNull).

1voto

askarsyzdykov Points 31

J'ai attrapé exception similaire après la conversion d'une Activité à partir de Java à Kotlin l'aide d'Android Studio outil de conversion. Donc, c'est que j'ai eu override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)

C'est juste override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

Différence en intent: Intent?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X