Поэтому, когда вы вызываете setOnClickListener
, компилятор Kotlin действительно абстрагирует некоторые важные детали.На самом деле происходит следующее:
setOnClickListener(object: View.OnClickListener {
override fun onClick(v: View?) {
doAThing()
}
})
Это SAM конструктор .Но, как вы можете видеть, тип возврата onClick
- это Unit, и возвращать из анонимного объекта также не имеет смысла.Было бы полезно иметь больше контекста относительно того, почему вы структурировали свой код так, как вы это делаете, но вот потенциальное решение вашей проблемы:
// in onCreate
for (btn in answerButtons) {
btn.setOnClickListener {
if (btn.text == solution) {
doTheThingWhenCorrectAnswer()
} else {
doTheThingWhenIncorrectAnswer()
}
}
}
Если бы это было реальное приложение, я бы дополнительно предложилвыдвигая логику для проверки ответов на уровне модели, чтобы поддерживать четкое разделение интересов.