我有一个实现两者的 ActivityCheckbox.OnCheckedChangeListener
并且RadioGroup.OnCheckedChangeListener
这些组都是动态生成的,并且Activity
与listener
.
但是,当我单击 RadioGroup 时,RadioGroup.OnCheckChangeListener
它会被完全忽略,但这就是它变得奇怪的地方。它触发CheckBox.OnCheckChangeListener
!我尝试在传递之前将活动投射到 RadioGroup 侦听器,但 RadioGroup 甚至无法接受它,只有 CheckBox 侦听器通过。
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(subquestion.getQuestionType().equals("MULTIPLE_CHOICE_MULTI_ANSWER")) {
String selected = buttonView.getText().toString();
if (subquestion.getAnswer().getDataList() != null) {
Answer answer = subquestion.getAnswer();
ArrayList<String> checked = answer.getDataList();
if (checked.contains(selected)) {
checked.remove(selected);
Log.d("Checkbox" + buttonView.getId(), "unchecked");
} else {
checked.add(selected);
Log.d("Checkbox" + buttonView.getId(), "checked");
}
} else {
ArrayList<String> checked = new ArrayList<String>();
checked.add(selected);
subquestion.getAnswer().setDataList(checked);
Log.d("Checkbox" + buttonView.getId(), "checked");
}
}
if(subquestion.getQuestionType().equals("MULTIPLE_CHOICE_SINGLE_ANSWER")) {
RadioGroup group = buttonView; //CAN'T BE DONE
String selected = group.getFocusedChild().getId() + "";
subquestion.getAnswer().setData(selected);
Log.d("Radiobutton " + selected + group.getFocusedChild().getId(), "selected");
}
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//This does NOTHING, can't even be passed to the RadioGroup as a listener
}
如何从 buttonView 中获取 RadioGroup?我在代码中生成所有内容,并且每次都不同,因此没有静态 id 来确定点击了什么。我将一个 id 传递给单选按钮,让我知道哪个是哪个,但我不能像这样得到它。
它非常适合复选框,只是 Android 似乎抛出了错误的事件并为 RadioGroup 使用了错误的事件处理程序。
感谢您的阅读!