如何只允许3个中的1个android切换按钮一次打开

mol*_*man 7 java android togglebutton

我正在使用3个切换按钮.在我的Android应用程序中,我希望一次只能选择其中一个切换按钮.我该怎么做呢?

小智 12

一个简单的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);
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

}


xte*_*ore 6

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);
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)


Hap*_*ard 3

您可以使用单选按钮。如果您不想这样做,请查看此链接- 它向您展示了如何侦听按钮状态的更改。如果您发现其中一个按钮发生变化,请将另外 2 个按钮更改为关闭状态。