当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.IllegalArgumentException:指定为非null的参数为null:方法kotlin。jvm。内部的内在的。检查参数不完整

竺展
2023-03-14

我得到这个错误

java。lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin。jvm。内部的内在的。检查参数完整,参数事件

为了那条线

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

以下是整个代码。这段代码最初是在java中,我使用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
    }
})

共有3个答案

颜畅
2023-03-14

对我来说,它发生在微调器适配器项选择器上。下面是正确的代码。

rootView.spinnerState.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
     }
            override fun onNothingSelected(parent: AdapterView<*>?) {}
        }

确保适配器正确

陆建木
2023-03-14

要解决此问题,如果使用TextView,请将事件参数设为空。OnEditorActionListener。添加 在声明末尾:

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

蒋曾笑
2023-03-14

最后一个参数可以是null,如docs所述:

KeyEvent:如果由回车键触发,则这是事件;否则,该值为空。

因此,您需要做的是使Kotlin类型为null,以说明这一点,否则注入的null检查将在应用程序收到具有null值的调用时崩溃,正如您已经看到的:

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

在这个答案中有更多关于平台类型的解释。

 类似资料: