0

ここにケースがあります: 私は 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);
      }
    }
4

1 に答える 1