Android получить идентификатор ресурса в лямбда-функции возвращает неверный идентификатор - PullRequest
0 голосов
/ 06 мая 2020

Я использую кнопки материалов и OnButtonCheckedListener в MaterialButtonToggleGroup. В обратном вызове слушателя я хочу проверить, какая кнопка была отмечена.

view.findViewById<MaterialButtonToggleGroup>(R.id.trainingWeightButton)
    .addOnButtonCheckedListener {_, resId, isChecked ->
        viewModel.isTrainingWeightValid = resId == R.id.trainingWeightButtonYes && isChecked
    }

Но R.id.trainingWeightButtonYes имеет какое-то странное значение.

Если я использую следующий код, он работает нормально.

val trainingWeightButtonYesId: Int = R.id.trainingWeightButtonYes
view.findViewById<MaterialButtonToggleGroup>(R.id.trainingWeightButton)
    .addOnButtonCheckedListener {_, resId, isChecked ->
        viewModel.isTrainingWeightValid = resId == trainingWeightButtonYesId && isChecked
    }

Я совершенно не понимаю, почему второй подход работает, а первый - нет.

Кто-нибудь знает, в чем разница? Это что-то Kotlin конкретное c здесь?

...