首页 文章

内联onFocusChange kotlin

提问于
浏览
1

我正在尝试为 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 回答

  • 2

    你忘了打电话给 hasFocus

    setOnFocusChangeListener(View.OnFocusChangeListener { view, b -> hasFocus(b) })
                                                                     /\/\/\/\/\
    
  • 3

    只是为了澄清,创建内联方法扩展并没有什么意义 . 这是我最初的目标,但我后来意识到使用:

    editText.setOnFocusChangeListener { view, b -> doSomething(b) }
    

    是可能的,它是内联的,它很漂亮,不需要额外的工作

相关问题