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
}
})
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 .
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?)
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.