このエラーが発生しています
_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でした。Android Studioを使用してKotlinに変換しましたが、このエラーが発生しました。プロジェクトの再構築とクリーニングを試みましたが、うまくいきませんでした。
_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
}
})
_
docs で説明されているように、最後のパラメーターはnull
にすることができます。
KeyEvent
:Enterキーによってトリガーされた場合、これはイベントです。それ以外の場合、これはヌルです。
したがって、これを説明するためにKotlin型をNULL可能にする必要があります。そうしないと、注入されたnull
チェックは、すでに見たようにnull
値で呼び出しを受け取るとアプリケーションをクラッシュさせます。 :
edtSearch?.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent?): Boolean {
...
}
})
プラットフォームタイプの詳細については、 この回答 をご覧ください。
この問題を解決するには、「イベント」パラメーターをヌル可能にする必要があります。追加 "?"宣言の最後。
fun onEditorAction(v:TextView、actionId:Int、event:KeyEvent?)をオーバーライドします
同様の例外が発生しました:「Java.lang.IllegalArgumentException:null以外として指定されたパラメーターはnullです:メソッドkotlin.jvm.internal.Intrinsics.checkParameterIsNotNull、パラメーターtitle
」。
次に、関数を調べて、次のことをしてはいけないがnull
になったパラメーターを見つけました。
_class Item(
val id: Int,
val title: String,
val address: String
)
_
Item(id, name, address)
のように呼び出し、name
がnull
だった場合、この例外が発生しました。