web-dev-qa-db-fra.com

IllegalArgumentException: le paramètre spécifié comme non-null est null

Je reçois ce qui suit 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 fonction semble être invalide. Cependant, je ne sais pas comment résoudre ce problème. Y a-t-il quelque chose de spécifique à Kotlin que j'ai manqué?

39
A Maharaja

L'exception est assez claire: vous passez null pour le paramètre.

Par défaut, toutes les variables et tous les paramètres de Kotlin ne sont pas nuls. Si vous voulez passer le paramètre null à la méthode, vous devez ajouter ? à son type, par exemple:

fun fetchMerchantHashes(intent: Intent?)

Pour plus d'informations: null-safety .

82
Alexander Romanov

Dans mon cas, cette erreur a mis en garde sur probable en passant un null en tant que paramètre. Trois façons de corriger.

  1. Changer le type d'un paramètre à l'endroit correspondant. S'il est reçu de Java, ajoutez l'annotation @NonNull à une définition de variable.
  2. Ajoutez !! à un argument de la méthode.
  3. Ajoutez ? au paramètre de la classe Kotlin. Je pense que l'outil de conversion Kotlin pourrait le faire par défaut si, dans la classe Java, aucune annotation n'était utilisée (comme @Nullable, @NonNull).
1
CoolMind

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

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

Différence dans intent: Intent?

0
askarsyzdykov

La réponse simple fonctionnera sûrement ... Lorsque vous extrayez les données du serveur à l'aide de Rest Client (appels de services Web) (GET or POST) et s'il peut y avoir une valeur de paramètre nulle dans la réponse json et que vous extrayez le paramètre et en l'ajoutant à textview vous obtenez cette erreur ..

Solution: suffit d'ajouter? marquer à la variable comme ci-dessous ..

Exemple:

var batchNo: String? = "" (Correct Approach)
var batchNo= "" (Will Get Error)

Ici, j'essaie de récupérer batchNo en utilisant un appel de service.

0