ここにケースがあります: 私は radioGroupのメンバーではない4 つの radioButtons を持っています。これは、RadioGroup がデフォルトで子を垂直方向に配置し、相互に相対的に配置できないためです。現在、すべての radioButton をチェックしています。私が達成したいのは、チェックされた状態を制御することです。そのため、1 つがチェックされた場合 (true)、他のチェックされた状態は自動的に false に設定されます。ウィジェットは独立したレイアウト要素であるため、それらをすべてグループ化する方法を見つける必要があると思います。isChecked および setChecked 組み込みメソッドを使用して単純な if..else if 関数で 4 つの RadioButton 変数をコーディングしてみました。次に、それらをRadiobutton []配列にグループ化し、スイッチケースループでarray.lengthにループしてみました。何も機能しません。2日間スタックします。どんな助けでも感謝します。
返信ありがとうございます。さらに説明します。RelativeLayout の親で、それぞれのすぐ下に 4 つの imageViews と 4 つの radioButtons があるため、ユーザーは好みの画像を選択できます。imageViews は垂直に配置されていないため、radioButtons も同様です。だから私はradioGroupを使いたくないのです。LinearLayout を使用して imageViews を垂直方向に配置し、radioButtons をグループ内に配置することができます。すべての radioButton のチェック状態はデフォルトで false であり、チェックすると true になります。問題は、すべての radioButtons をチェックできることです。私が欲しいのは、 RadioButton を1つ選択すると、他のボタンは自動的にチェックされなくなるため、いつでも1つだけをチェックできるようになります。スニペットは次のとおりです。
private RadioButton rbtnWater;
private RadioButton rbtnRoad;
private RadioButton rbtnBoy;
private RadioButton rbtnLeft;
rbtnWater = (RadioButton) findViewById(R.id.rbtnWater);
rbtnRoad = (RadioButton) findViewById(R.id.rbtnRoad);
rbtnBoy = (RadioButton)findViewById(R.id.rbtnBoy);
rbtnLeft = (RadioButton) findViewById(R.id.rbtnLeft)
//method called at onClick attribute (XML)
public void checkState(View v) {
if (rbtnWater.isChecked()) {
rbtnLeft.setChecked(false);
rbtnBoy.setChecked(false);
rbtnRoad.setChecked(false);
}
else if (rbtnLeft.isChecked()) {
rbtnBoy.setChecked(false);
rbtnWater.setChecked(false);
rbtnRoad.setChecked(false);
}
else if (rbtnBoy.isChecked()) {
rbtnWater.setChecked(false);
rbtnRoad.setChecked(false);
rbtnLeft.setChecked(false);
}
else if (rbtnRoad.isChecked()) {
rbtnWater.setChecked(false);
rbtnBoy.setChecked(false);
rbtnLeft.setChecked(false);
}
}