java 如何只允许1 android切换按钮出3要在一次

1zmg4dgp  于 2023-03-11  发布在  Java
关注(0)|答案(5)|浏览(99)

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

hm2xizp9

hm2xizp91#

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

}

ql3eal8s

ql3eal8s2#

Pikeman的解决方案是可以的,但是根据你有多少按钮,你可能需要考虑一个可以迭代的数组。
对于少量的按钮,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);
      }
    }
  }
jgwigjjp

jgwigjjp3#

你可以使用radio buttons,如果你不想这样,看看这个链接--它告诉你如何监听按钮状态的变化,如果你发现其中一个按钮被改变了,把另外两个按钮改为关闭状态。

zpf6vheq

zpf6vheq4#

我使用以下函数;

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

现在除了你选择的那一个以外所有的都被认为是
出口

setIsChecked(buttonOne);

现在仅勾选按钮1,等等。

t8e9dugd

t8e9dugd5#

如果你使用MaterialButtonToggleGroup,你只需要在你的xml中使用这个属性:

<com.google.android.material.button.MaterialButtonToggleGroup
   ...
   app:singleSelection="true"
   ...>

相关问题