我有一个非常简单的问题,我对 Java 很陌生,如果这是一件小事,我深表歉意。
在我的应用程序中的一种情况下,检查一系列复选框中的每一个都会获得相同数量的分数。我可以为每个设置一个 OnClickListener,但这似乎是一个不优雅的解决方案,所以我想编写一些代码,“检查这些 CheckBox 中的任何一个都会产生相同的结果”。
不幸的是,我写的内容不起作用:
int[] ids = {R.id.cmCheckBox1, R.id.cmCheckBox2, R.id.cmCheckBox3, R.id.cmCheckBox4, R.id.cmCheckBox5, R.id.cmCheckBox6, R.id.ctCheckBox1, R.id.ctCheckBox2, R.id.ctCheckBox3};
final CheckBox[] checkBoxes = new CheckBox[ids.length];
for (int i = 0; i < ids.length; ++i) {
checkBoxes[i] = (CheckBox) findViewById(ids[i]);
checkBoxes[i].setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (checkBoxes[i].isChecked()) {
Global.score += 5;
} else {
Global.score -= 5;
}
}
});
}
对于此代码,我收到错误消息:
"Cannot refer to a non-final variable i in an inner class defined in a different method".
将第 3 行变成for (final int i = 0; i < ids.length; ++i) {
没有帮助,我猜是因为最终变量无法修改?
任何建议将不胜感激!