2017-12-16 3 views
2

ich diesen Fehlerjava.lang.IllegalArgumentException: Parameter als nicht-null angegeben ist null: Methode kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter event

für die Linie

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

Folgendes ist der gesamte Code. Dieser Code war ursprünglich in Java, ich habe ihn mit Android Studio in Kotlin konvertiert, aber jetzt bekomme ich diesen Fehler. Ich habe versucht, das Projekt neu aufzubauen und zu säubern, aber das hat nicht funktioniert.

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

Antwort

3

Der letzte Parameter null sein kann, wie von den docs:

KeyEvent: Wenn durch eine Enter-Taste ausgelöst, ist dies der Fall; Andernfalls ist dies null.

Also, was Sie machen tun müssen, ist die Kotlin Typ Null um dies zu berücksichtigen, da sonst die injizierten null Prüfung wird Ihre Anwendung abstürzen, wenn es einen Anruf mit einem null Wert bekommt, wie Sie es schon gesehen:

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

Weitere Erläuterungen zu Plattformtypen in this answer.

Verwandte Themen