SearchView.onQueryTextListener在Fragment(Kotlin)中不起作用
我提出的问题是关于事件onQueryTextListener
,我声明它是以前在java中使用它,但是当我提交文本或当我更改文本时它不显示日志。
这是我的片段的代码:
Fragment_producto.kt
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val vG = inflater!!.inflate(R.layout.fragment_producto, container, false) vG.recycler_producto.layoutManager = LinearLayoutManager(activity) vG.recycler_producto.hasFixedSize() vG.recycler_producto.adapter = Producto_Adapter(activity,this) vG.fab_scan.onClick { IntentIntegrator.forSupportFragment(this@Fragment_producto).initiateScan() } adapter = vG.recycler_producto.adapter as Producto_Adapter metodos.attachSwipeCheck(vG.recycler_producto) metodos.attachSwipeWrong(vG.recycler_producto) setHasOptionsMenu(true) return vG } override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { Log.i(TAG,"Llego a create optionsmenu") activity.menuInflater.inflate(R.menu.menu_producto,menu) /*val menuItem = menu.findItem(R.id.menu_search) val search = menuItem.actionView as SearchView searching(search)*/ super.onCreateOptionsMenu(menu, inflater) } override fun onPrepareOptionsMenu(menu: Menu) { val menuItem = menu.findItem(R.id.menu_search) val search = menuItem.actionView as SearchView searching(search) super.onPrepareOptionsMenu(menu) } private fun searching(search: SearchView){ search.onQueryTextListener {object: SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { Log.i(TAG,"Llego al querysubmit") return false } override fun onQueryTextChange(newText: String): Boolean { Log.i(TAG,"Llego al querytextchange") return true } }} }
请帮帮我。
谢谢
尝试改变你的searching
方法:
private fun searching(search: SearchView) { search.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { Log.i(TAG,"Llego al querysubmit") return false } override fun onQueryTextChange(newText: String): Boolean { Log.i(TAG,"Llego al querytextchange") return true } }) }
我没有测试它,但你的括号似乎iffy。 我认为应该有()
而不是{}
你正在使用onQueryTextListener
(与我上面的代码中的setOnQueryTextListener
相比)的方法不适合我。 你在那里使用任何扩展方法? 也许这个方法需要一个函数String->()
作为参数,所以当你把OnQueryTextListener
放到{}
你只是给方法一个lambda作为参数创建一个对象,但从来没有使用它。