Нельзя использовать лямбду внутри метода `onClick` пользовательского класса в Kotlin - PullRequest
0 голосов
/ 19 марта 2019

Я хочу создать серию прослушивателей кликов для 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)
                }
            }
    }
}

Здесь я создаю пользовательский прослушиватель щелчков с лямбдами (сеттер и геттер). Я создаю лямбды во Fragment, где я устанавливаю прослушиватели кликов на TextView s.

Я могу вызвать setValue() и getValue() внутри конструктора (init), но не могу использовать его внутри onClick().

enter image description here

Если я позвоню getValue2(), я получу еще одну ошибку:

enter image description here

1 Ответ

4 голосов
/ 19 марта 2019

Объявите getValue() и setValue() как свойства:

private class ClickListener(
    val setValue: (Int) -> Unit,
    val getValue: () -> Int
) : View.OnClickListener {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...