SearchView.onQueryTextListener在Fragment(Kotlin)中不起作用

时间:2018-02-09 19:14:35

标签: android android-fragments kotlin

我提出的问题是关于事件protocol WalletProtocol { func printMoneyStack() } class Wallet<T> { var moneyStack: [T] = [] init(moneyStack: [T]) { self.moneyStack = moneyStack } } class BitcoinWallet: Wallet<String>, WalletProtocol { func printMoneyStack() { print(moneyStack) } } class EthereumWallet: Wallet<Int>, WalletProtocol { func printMoneyStack() { print(moneyStack) } } let bitcoinWallet = BitcoinWallet(moneyStack: ["A","B"]) let etheureumWallet = EthereumWallet(moneyStack: [1,2]) let wallets: [WalletProtocol] = [bitcoinWallet, etheureumWallet] for wallet in wallets { wallet.printMoneyStack() } ,我声明它在之前的java中使用它,但它在我提交文本或更改文本时不显示日志。

这是我片段的代码:

Fragment_producto.kt

onQueryTextListener

请帮帮我。

由于

2 个答案:

答案 0 :(得分:2)

尝试将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作为创建一个对象的参数但从来没有使用它。

答案 1 :(得分:1)

我还必须实现侦听器以使其正确编译:

<cctype>