Android 如何完成我的构造函数?
我有以下代码:Android 如何完成我的构造函数?,android,constructor,kotlin,Android,Constructor,Kotlin,我有以下代码: override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_search, menu) val searchItem = menu.findItem(R.id.action_search) val searchView = MenuItemCompat.getActionView(searchItem) as Sea
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_search, menu)
val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView
//*** setOnQueryTextFocusChangeListener ***
searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener() {
override fun onFocusChange(v: View, hasFocus: Boolean) {
}
})
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
return false
}
override fun onQueryTextChange(searchQuery: String): Boolean {
adapter!!.filter(searchQuery.toString().trim { it <= ' ' })
tvListAnimal.invalidate()
return true
}
})
return true
}
当我尝试使用Android Studio运行时,我收到以下消息:
'此类没有构造函数。'
我试着这样写:
searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener {
override fun onFocusChange(v: View, hasFocus: Boolean) {
}
})
它可以工作,但应用程序崩溃,因为我删除了View.OnFocusChangeListener
后面的括号
我不知道如何完成这个。有人有主意吗?您的应用程序崩溃与此问题无关,您应该将stacktrace放在这里。您的第二个解决方案是创建
OnFocusChangeListener
实例的正确方法。由于您不是从这里的类继承,因此不需要调用超类的构造函数(这是()
将标记的),您只需要在那里写下接口的名称。您应该发布崩溃产生的日志(可能作为一个单独的问题,因为问题不是关于构造函数的)。谢谢您,但在第一种情况下,我的意思是whereobject:View.onfocuschangesetener()
我收到了消息“这个类没有构造函数”。因此,对于您来说,解决方案是删除括号?应用程序崩溃的事实与此无关?是的,你必须去掉括号,因为你是从一个接口继承的,而不是扩展一个类。是的,您的崩溃是由代码中的其他内容引起的。你应该看看stacktrace,看看是什么使你的应用程序崩溃,如果你想不出来,把这个错误作为一个单独的问题发布出来。是的,你完全正确!我要去邮局!非常感谢。
searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener {
override fun onFocusChange(v: View, hasFocus: Boolean) {
}
})