android - 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 特定的东西吗?
解决方案
推荐阅读
- python - Tensorflow:SSD_mobilenet_v2_2 中的 TFLiteConverter(保存模型 -> TFLite)
- for-loop - 批处理:如何在嵌套的 for 循环中设置变量并在其外部重新使用它(enabledelayedexpansion 不起作用)
- r - 我们可以在 R 森林图中用不同颜色为不同的行/协变量/研究着色吗?
- python - Spyder 类型自动预测至少需要 3 个字符
- arrays - Laravel - 允许从刀片视图中的文件夹下载文件
- sql - 关于列中值的SQL查询问题
- php - SQLSTATE [23000] 完整性约束破坏:1048 列“用户名”不能为空(ANDROID-MYSQL)
- python - Python 将 INT 转换为电话号码
- r - 如何在 R 中使用 mutate_at 计算加权平均值?
- c# - SQL Server 中的存储过程截断 VARCHAR 字段