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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6282702/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 15:11:33  来源:igfitidea点击:

how to allow only 1 android toggle button out of 3 to be on at once

javaandroidtogglebutton

提问by molleman

i am using 3 toggle buttons. In my android application i would like that only 1 of these toggle buttons can be selected at once. How would i go about doing this?

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

采纳答案by Haphazard

You could use radio buttons. If you don't want that, check out this link- it shows you how to listen for changes to the button state. If you find that one of your buttons is changed, change the other 2 to the off state.

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

回答by ThePikeman

A simple onChangeListener will do:

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

}

}

回答by xtempore

ThePikeman's solution is okay, but depending on how many buttons you have you might want to consider an array that you can iterate over.

ThePikeman 的解决方案是好的,但根据您拥有的按钮数量,您可能需要考虑一个可以迭代的数组。

For a small number of buttons, Pikeman's code can be simplified to save some typing...

对于少量按钮,可以简化 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);
      }
    }
  }

回答by aya salama

I use the following function;

我使用以下功能;

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

now all of them are deemed except for the one you choose

现在所有的都被认为除了你选择的那个

ex

前任

setIsChecked(buttonOne);

Now only button one is checked and etc..

现在只有按钮一被选中等等。