我提出的问题是关于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
        }
    })
}

我还没有测试过,但您的括号似乎很呆滞。我认为应该使用()而不是{}
您正在使用onQueryTextListener的方法(与上面我的代码中的setOnQueryTextListener相比)无法为我编译。您在那里使用任何扩展方法吗?也许该方法将函数String->()作为参数,因此,当您将OnQueryTextListener放入{}中时,您只是给该方法一个lambda作为创建对象的参数而从不使用它。

10-08 03:02