Ява.ленг.IllegalArgumentException: параметр, указанный как ненулевой, равен null: метод kotlin.виртуальная машина Java.внутренний.Встроенные средства.checkParameterIsNotNull
Я получаю эту ошибку
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter event
в строке
override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent)
Ниже приведен весь код. Этот код был первоначально на java, я преобразовал его в Kotlin с помощью Android Studio, но теперь я получаю эту ошибку. Я попытался восстановить и очистить проект, но это не сработало.
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
}
})
1 ответов
последний параметр может быть null
, как описано docs:
KeyEvent
: если срабатывает клавиша enter, это событие; в противном случае это null.
Итак, что вам нужно сделать, это сделать тип Kotlin nullable для учета этого, иначе введенный null
проверка приведет к сбою вашего приложения, когда он получит вызов с null
значение, как вы уже видели это:
edtSearch?.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent?): Boolean {
...
}
})
больше объяснения о платформе вводит в ответ.