У меня есть этот код для получения значений из выбранного ToggleGroup.
Однако когда я запускаю этот код, я получаю пустой список. Кажется, я не могу понять, как это решить.
public TestPane(TestService service) {
this.service = service;
this.setPrefHeight(300);
this.setPrefWidth(750);
this.setPadding(new Insets(5, 5, 5, 5));
this.setVgap(5);
this.setHgap(5);
questionField = new Label();
vragen = service.getAllQuestions();
Question question = vragen.iterator().next();
questionField.setText(question.getQuestion());
vragen.remove(question);
add(questionField, 0, 0, 1, 1);
statementGroup = new ToggleGroup();
Set<String> statements = question.getStatements();
System.out.println(statements);
int i = 1;
for (String st : statements) {
radio = new RadioButton(st);
radio.setText(st);
radio.setUserData(st);
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
add(radio, 0, i++);
}
submitButton = new Button("Submit");
add(submitButton, 0, i);
submitButton.setOnAction(new SubmitHandler(this,service));
}
public List<String> getSelectedStatements() {
List<String> selected = new ArrayList<String>();
if (statementGroup.getSelectedToggle() != null) {
selected.add(statementGroup.getSelectedToggle().getUserData().toString());
}
return selected;
}




Следующая строка неверна:
radio.setToggleGroup((ToggleGroup) statementGroup.getUserData());
Правильный вызов будет:
radio.setToggleGroup(statementGroup);
Чтобы ответить на вопрос «почему»: метод getSelectedToggle в ToggleGroup все время возвращает ноль, потому что с ним не связаны никакие переключатели, так как
(ToggleGroup) statementGroup.getUserData()
возвращает null, поэтому на самом деле будет выполняться radio.setToggleGroup(null), что означает: RadioButton не имеет группы переключения.