问题的原因是在使用for循环添加RadioGroup时,无法正确地为每个RadioGroup添加OnCheckedChangeListener,导致第一个视图无法正常工作。解决这个问题的方法是手动为第一个RadioGroup添加OnCheckedChangeListener。
以下是示例代码:
RadioGroup rg1 = findViewById(R.id.radio_group_1);
RadioGroup rg2 = findViewById(R.id.radio_group_2);
RadioGroup rg3 = findViewById(R.id.radio_group_3);
// 手动为第一个RadioGroup添加OnCheckedChangeListener
rg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
// 在这里编写你的处理逻辑
}
});
// 使用for循环为后续RadioGroup添加OnCheckedChangeListener
for (int i = 0; i < rg2.getChildCount(); i++) {
((RadioButton) rg2.getChildAt(i)).setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
// 在这里编写你的处理逻辑
}
});
}
for (int i = 0; i < rg3.getChildCount(); i++) {
((RadioButton) rg3.getChildAt(i)).setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
// 在这里编写你的处理逻辑
}
});
}