我正在尝试为 setOnFocusChangeListener
构建内联函数
这是我到目前为止所得到的:
inline fun EditText.onFocusChange(crossinline hasFocus: (Boolean) -> Unit) {
setOnFocusChangeListener(View.OnFocusChangeListener { view, b -> })
}
我就是这样用的
freightTimeOfDay.onFocusChange { doSomething() }
不幸的是,虽然它没有给我任何错误,但从未调用 doSomething()
.
我在这里寻找两件事:
1 - 在那里获取一个参数,这样我就可以将它传递给doSomething() . 例如
freightTimeOfDay.onFocusChange { doSomething(hasFocus) }
2 - 让它发挥作用:p,现在没有任何事情发生 .
Update:
好像kotlin已经有了某种类型的内联
editText.setOnFocusChangeListener { view, b -> doSomething(b) }
然而,这对我来说也不起作用, doSomething(hasFocus: Boolean)
永远不会被调用 .
提前致谢!
2 回答
你忘了打电话给
hasFocus
:只是为了澄清,创建内联方法扩展并没有什么意义 . 这是我最初的目标,但我后来意识到使用:
是可能的,它是内联的,它很漂亮,不需要额外的工作