在每个场景中,我有多个toggleGroups,每个都有两个RadioButtons。无论我首先选择哪个场景的RadioButton,听众都不会抓住它。它不是保存设置的用户数据,而是仍然为空。如果我第二次按它,它就可以了。
当我改变场景时,它又一遍又一遍。听众不会听第一个动作。
这是一个已知的错误吗?我像这样保存userData:
@FXML private RadioButton rbCheck11; @FXML private RadioButton rbCheck12;
@FXML private ToggleGroup group1;
public static String[] values = new String[326];
@FXML
private void testing() {
rbCheck11.setUserData(1); rbCheck12.setUserData(0);
group1.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
if (group1.getSelectedToggle() != null){
values[0] = group1.getSelectedToggle().getUserData().toString();
}
});
}
答案 0 :(得分:1)
在FXML文件中,您将回调与<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/_16sdp"
tools:context="com.example.freddie.ukulimamachinery.LoginActivity">
</RelativeLayout>
:
testing()
你没有分享FXML,所以这只是猜测,例如你将@FXML
private void testing() { ... attach selectedToggleProperty of the ToggleGroup ... }
的{{1}}设置为onAction
:
RadioButton
在这种情况下,如果您点击其中一个testing
,<RadioButton fx:id="rbCheck11" layoutX="121.0" layoutY="115.0" mnemonicParsing="false"
onAction="#testing" text="RadioButton">
<toggleGroup>
<ToggleGroup fx:id="group1" />
</toggleGroup>
</RadioButton>
<RadioButton fx:id="rbCheck12" layoutX="127.0" layoutY="166.0" mnemonicParsing="false"
onAction="#testing" text="RadioButton" toggleGroup="$group1" />
将仅执行。
只要testing
将侦听器附加到RadioButton
的{{1}}上,侦听器就会仅在选择更改时执行。
更糟糕的是,每次按下单选按钮都会附加一个新的听众,这样你就会有越来越多的听众。
要解决此问题,请将testing
的主体移动到控制器的selectedProperty
方法,只要加载FXML文件,就将其附加到组一次。然后完全从控制器中删除ToggleGroup
。