动态创建的无线电组没有听到检查更改监听器
dynamically created radio group not hearing checked change listener
我创建了一个带有 3 个单选按钮的动态单选组。我的问题是可以单击所有 3 个按钮,单选组听不到检查更改。我想要单选组内单选按钮的默认行为,其中只能选中一个单选按钮。
RadioButton[] rb = new RadioButton[question.getAnswers().size()];
RadioGroup rg = new RadioGroup(getActivity());
rg.setOrientation(RadioGroup.VERTICAL);
questionContainer.addView(rg);
for (int i =0; i < question.getAnswers().size(); i++) {
rb[i] = new RadioButton(getActivity());
rb[i].setText(question.getAnswers().get(i));
rg.addView(rb[i]);
}
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
Log.e(debugTag, "radio button position: "+checkedId);
}
});
questionContainer 是我片段的 LinearLayout 容器
问题实际上源于我用来创建单选按钮的库。经过一些挖掘和 @R 提供的 2 个非常有用的链接。 Kirill 我没有创建 RadioGroup 来将单选按钮放在其中。我自己处理 CompoundButton(RadioButton extend from this class) checked change listener。
final RadioButton[] rb = new RadioButton[question.getAnswers().size()];
com.rey.material.widget.CompoundButton.OnCheckedChangeListener c = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
for (RadioButton aRb : rb) {
aRb.setChecked(aRb == compoundButton);
}
}
}
};
for (int i =0; i < question.getAnswers().size(); i++) {
rb[i] = new RadioButton(getActivity());
rb[i].setId(i);
rb[i].setOnCheckedChangeListener(c);
rb[i].setChecked(false);
rb[i].setText(question.getAnswers().get(i));
questionContainer.addView(rb[i]);
}
我创建了一个带有 3 个单选按钮的动态单选组。我的问题是可以单击所有 3 个按钮,单选组听不到检查更改。我想要单选组内单选按钮的默认行为,其中只能选中一个单选按钮。
RadioButton[] rb = new RadioButton[question.getAnswers().size()];
RadioGroup rg = new RadioGroup(getActivity());
rg.setOrientation(RadioGroup.VERTICAL);
questionContainer.addView(rg);
for (int i =0; i < question.getAnswers().size(); i++) {
rb[i] = new RadioButton(getActivity());
rb[i].setText(question.getAnswers().get(i));
rg.addView(rb[i]);
}
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
Log.e(debugTag, "radio button position: "+checkedId);
}
});
questionContainer 是我片段的 LinearLayout 容器
问题实际上源于我用来创建单选按钮的库。经过一些挖掘和 @R 提供的 2 个非常有用的链接。 Kirill 我没有创建 RadioGroup 来将单选按钮放在其中。我自己处理 CompoundButton(RadioButton extend from this class) checked change listener。
final RadioButton[] rb = new RadioButton[question.getAnswers().size()];
com.rey.material.widget.CompoundButton.OnCheckedChangeListener c = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
for (RadioButton aRb : rb) {
aRb.setChecked(aRb == compoundButton);
}
}
}
};
for (int i =0; i < question.getAnswers().size(); i++) {
rb[i] = new RadioButton(getActivity());
rb[i].setId(i);
rb[i].setOnCheckedChangeListener(c);
rb[i].setChecked(false);
rb[i].setText(question.getAnswers().get(i));
questionContainer.addView(rb[i]);
}