Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何允许3个android切换按钮中的1个同时打开_Java_Android_Togglebutton - Fatal编程技术网

Java 如何允许3个android切换按钮中的1个同时打开

Java 如何允许3个android切换按钮中的1个同时打开,java,android,togglebutton,Java,Android,Togglebutton,我使用3个切换按钮。在我的android应用程序中,我希望一次只能选择其中的一个切换按钮。我该怎么做呢?你可以用。如果你不想这样做,请查看-它向你展示了如何监听按钮状态的变化。如果您发现其中一个按钮已更改,请将另两个按钮更改为关闭状态。一个简单的onChangeListener将执行以下操作: public class TestProjectActivity extends Activity { ToggleButton one; ToggleButton two; ToggleButton

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

你可以用。如果你不想这样做,请查看-它向你展示了如何监听按钮状态的变化。如果您发现其中一个按钮已更改,请将另两个按钮更改为关闭状态。

一个简单的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);
            }
        }
    }
};

}/P>< P> Pikman的解决方案是可以的,但是取决于你有多少个按钮,你可能需要考虑一个可以迭代的数组。

对于少量的按钮,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);
      }
    }
  }

我使用以下功能

private void setIsChecked(CheckBox checkBox){
      buttonOne.setChecked(false);
      buttonTwo.setChecked(false);
      buttonThree.setChecked(false);
      checkBox.setChecked(true)
}
现在,除了您选择的一个,所有这些都被视为


现在只选中一个按钮,以此类推。

您可以使用RadioGroup()。看这条线。为什么是CompoundButton与RadioGroup?
setIsChecked(buttonOne);