web-dev-qa-db-ja.com

java.lang.IllegalArgumentException:null以外として指定されたパラメーターはnullです:メソッドkotlin.jvm.internal.Intrinsics.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でした。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
    }
})
_
21
Nirvan Anjirbag

docs で説明されているように、最後のパラメーターはnullにすることができます。

KeyEvent:Enterキーによってトリガーされた場合、これはイベントです。それ以外の場合、これはヌルです。

したがって、これを説明するためにKotlin型をNULL可能にする必要があります。そうしないと、注入されたnullチェックは、すでに見たようにnull値で呼び出しを受け取るとアプリケーションをクラッシュさせます。 :

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

プラットフォームタイプの詳細については、 この回答 をご覧ください。

25
zsmb13

この問題を解決するには、「イベント」パラメーターをヌル可能にする必要があります。追加 "?"宣言の最後。

fun onEditorAction(v:TextView、actionId:Int、event:KeyEvent?)をオーバーライドします

2
Snehal

同様の例外が発生しました:「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)のように呼び出し、namenullだった場合、この例外が発生しました。

1
CoolMind