У меня есть деятельность, которая реализует как Checkbox.OnCheckedChangeListener
, так и RadioGroup.OnCheckedChangeListener
Группы динамически сгенерированы и переданы одинаковыми Activity
как listener
.Android RadioGroup OnCheckedChangeListener
Однако, когда я нажимаю на 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
}
Как получить RadioGroup с кнопки ViewView? Я генерирую все в коде, и каждый раз он различен, поэтому нет статических идентификаторов, чтобы определить, что нажали. Я передаю идентификатор радиолюбителям, чтобы сообщить мне, что это такое, но я не могу добраться до него так.
Он отлично работает для флажков, это просто, что Android, похоже, выбрасывает неправильное событие и использует неправильный обработчик событий для RadioGroup.
Благодарим за понимание!
ты попытался установить андроид: фокусируемый = "ложь" \t \t андроида: focusableInTouchMode = "ложь" в RadioGroup? – Umair