9

私は3つのトグルボタンを使用しています。私のAndroidアプリケーションでは、これらのトグルボタンの1つだけを一度に選択できるようにしたいと思います。どうすればこれを行うことができますか?

4

4 に答える 4

14

単純なonChangeListenerは次のことを行います。

public class TestProjectActivity extends Activity {

ToggleButton one; 
ToggleButton two;
ToggleButton three;
ToggleButton four;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    one = (ToggleButton) findViewById(R.id.toggleButton1);
    two = (ToggleButton) findViewById(R.id.toggleButton2);
    three = (ToggleButton) findViewById(R.id.toggleButton3);
    four = (ToggleButton) findViewById(R.id.toggleButton4);

    one.setOnCheckedChangeListener(changeChecker);
    two.setOnCheckedChangeListener(changeChecker);
    three.setOnCheckedChangeListener(changeChecker);
    four.setOnCheckedChangeListener(changeChecker);
}

OnCheckedChangeListener changeChecker = new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked){
            if (buttonView == one) {
                two.setChecked(false);
                three.setChecked(false);
                four.setChecked(false);
            }
            if (buttonView == two) {
                one.setChecked(false);
                three.setChecked(false);
                four.setChecked(false);
            }
            if (buttonView == three) {
                two.setChecked(false);
                one.setChecked(false);
                four.setChecked(false);
            }
            if (buttonView == four) {
                two.setChecked(false);
                three.setChecked(false);
                one.setChecked(false);
            }
        }
    }
};

}

于 2011-07-27T11:56:05.110 に答える
9

ThePikemanのソリューションは問題ありませんが、ボタンの数によっては、反復できる配列を検討することをお勧めします。

ボタンの数が少ない場合は、Pikemanのコードを簡略化して、入力を節約できます...

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked){
      if (buttonView != one) {
        one.setChecked(false);
      }
      if (buttonView != two) {
        two.setChecked(false);
      }
      if (buttonView != three) {
        three.setChecked(false);
      }
      if (buttonView != four) {
        four.setChecked(false);
      }
    }
  }
于 2013-09-07T03:45:56.360 に答える
3

ラジオボタンを使用できます。それが必要ない場合は、このリンクを確認してください。ボタンの状態の変化をリッスンする方法が示されています。ボタンの1つが変更されていることに気付いた場合は、他の2つをオフ状態に変更します。

于 2011-06-08T17:48:34.327 に答える
0

私は次の関数を使用します。

private void setIsChecked(CheckBox checkBox){
      buttonOne.setChecked(false);
      buttonTwo.setChecked(false);
      buttonThree.setChecked(false);
      checkBox.setChecked(true)
}

これで、選択したものを除いて、それらすべてが見なされます

setIsChecked(buttonOne);

これで、ボタン1のみがチェックされます。

于 2017-02-17T16:27:10.797 に答える