web-dev-qa-db-fra.com

java.lang.IllegalArgumentException: Le paramètre spécifié comme non nul est nul: méthode kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

Je reçois cette erreur

Java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter event

pour la ligne

override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent)

Voici le code entier. Ce code était à l'origine en Java, je l'ai converti en Kotlin en utilisant Android Studio, mais maintenant je reçois cette erreur. J'ai essayé de reconstruire et de nettoyer le projet, mais cela n'a pas fonctionné.

val action = supportActionBar //get the actionbar
action!!.setDisplayShowCustomEnabled(true) //enable it to display a custom view in the action bar.
action.setCustomView(R.layout.search_bar)//add the custom view
action.setDisplayShowTitleEnabled(false) //hide the title

edtSearch = action.customView.findViewById(R.id.edtSearch) as EditText //the text editor


//this is a listener to do a search when the user clicks on search button
edtSearch?.setOnEditorActionListener(object : TextView.OnEditorActionListener {
    override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent): Boolean {
    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
         Log.e("TAG","search button pressed")  //doSearch()
         return true
        }
     return false
    }
})
21
Nirvan Anjirbag

Le dernier paramètre peut être null, comme décrit par docs :

KeyEvent: S'il est déclenché par une touche Entrée, c'est l'événement; sinon, cela est nul.

Donc, ce que vous devez faire est de rendre le type Kotlin nullable pour en tenir compte, sinon la vérification injectée null plantera votre application quand elle recevra un appel avec une valeur null comme vous l'avez déjà fait vu:

edtSearch?.setOnEditorActionListener(object : TextView.OnEditorActionListener {
    override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent?): Boolean {
        ...
    }
})

Plus d'explications sur les types de plateformes dans cette réponse .

25
zsmb13

Pour résoudre ce problème, vous devez rendre le paramètre "événement" nullable. Ajouter "?" à la fin de la déclaration.

remplacer le plaisir onEditorAction (v: TextView, actionId: Int, événement: KeyEvent?)

2
Snehal

J'ai obtenu une exception similaire: "Java.lang.IllegalArgumentException: le paramètre spécifié comme non nul est nul: méthode kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, paramètre title".

Puis recherché une fonction et trouvé un paramètre qui est devenu null alors qu'il ne doit pas:

class Item(
    val id: Int,
    val title: String,
    val address: String
)

Quand je l'ai appelé comme Item(id, name, address) et name était null, j'ai eu cette exception.

1
CoolMind