无法在Kotlin中的自定义类的onClick方法内使用lambda

时间:2019-03-19 08:42:34

标签: lambda kotlin

我想为TextView创建一系列点击侦听器。

private class ClickListener(setValue: (Int) -> (Unit), getValue: () -> (Int)) : View.OnClickListener {

    override fun onClick(v: View?) {
            val oldValue = getValue()
            val newValue = v?.text.toString().toInt()
            if (newValue != oldValue) {
                if (oldValue != 0) {
                    v?.isSelected = false
                    v?.clearFocus()
                } else {
                    v?.isSelected = true
                    v?.requestFocus()
                    setValue(newValue)
                }
            }
    }
}

在这里,我使用lambda(setter和getter)创建了一个自定义的Click侦听器。我在Fragment中创建lambda,在其中将点击监听器设置为TextView

我可以在构造函数(setValue())中调用getValue()init,但不能在onClick()中使用它。

enter image description here

如果我致电getValue2(),则会收到另一个错误:

enter image description here

1 个答案:

答案 0 :(得分:4)

getValue()setValue()声明为属性:

private class ClickListener(
    val setValue: (Int) -> Unit,
    val getValue: () -> Int
) : View.OnClickListener {