首页 > 解决方案 > Android 在 lambda 函数中获取资源 ID 返回错误的 ID

问题描述

我正在使用材质按钮并在 MaterialButtonToggleGroup 中使用 OnButtonCheckedListener。在侦听器回调中,我想检查哪个按钮被选中。

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 特定的东西吗?

标签: androidkotlinmaterial-components-android

解决方案


推荐阅读