多个切换按钮在单个方法中启用或禁用

时间:2017-10-26 09:22:02

标签: android togglebutton android-togglebutton

我有3个toggleButtons,如果启用1,则其他2将被禁用。我可以通过if语句实现这一点。但是我需要为所有toggleButtons编写不同的if。

 case toggleButton1:
            if(toggleButton[0].isChecked())
            {
                toggleButton[1].setEnabled(false);
                toggleButton[2].setEnabled(false);
            }
            else
            {
                toggleButton[1].setEnabled(true);
                toggleButton[2].setEnabled(true);
            }
        break;

 case R.id.toggleButton2:

            if(toggleButton[1].isChecked())
            {
                toggleButton[0].setEnabled(false);
                toggleButton[2].setEnabled(false);
            }
            else
            {
                toggleButton[0].setEnabled(true);
                toggleButton[2].setEnabled(true);
            }

            break;

case R.id.toggleButton3:
            if(toggleButton[2].isChecked())
            {
                toggleButton[1].setEnabled(false);
                toggleButton[0].setEnabled(false);
            }
            else
            {
                toggleButton[1].setEnabled(true);
                toggleButton[0].setEnabled(true);
            }
            break;

如何将其分组到单个方法中?

编辑:

如果我尝试下面怎么样。

          private void toggle(int i) {
           if(i==0) {j=1,k=2} elseif(i==1) {j=0,k=2}else{j=0,k=1}

            if(toggleButton[i].isChecked())
            {
                toggleButton[j].setEnabled(false);
                toggleButton[k].setEnabled(false);
            }
            else
            {
                toggleButton[j].setEnabled(true);
                toggleButton[k].setEnabled(true);
            }

           }

4 个答案:

答案 0 :(得分:0)

尝试使用toggleButton

Arabic864 arabic864 = new Arabic864(); byte[] arabicTXT = arabic864.Convert("بسم الله الرحمن الرحيم", false); lp.write(arabicTXT);
setOnCheckedChangeListener

答案 1 :(得分:0)

创建一个这样的类

private static class OnToggleButtonChangeListener implements CompoundButton.OnCheckedChangeListener{
    private final ToggleButton toggleButton1;
    private final ToggleButton toggleButton2;

    public OnToggleButtonChangeListener(ToggleButton toggleButton1, ToggleButton toggleButton2){
        this.toggleButton1 = toggleButton1;
        this.toggleButton2 = toggleButton2;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        toggleButton1.setEnabled(!isChecked);
        toggleButton2.setEnabled(!isChecked);
    }
}

将监听器分配给按钮并提供2个按钮,如果切换状态改变则应禁用这些按钮

toggleButtonXy.setOnCheckedChangeListener(new OnToggleButtonChangeListener(toggleButtonX, toggleButtonY));

答案 2 :(得分:0)

您可以尝试我的代码:

private void setChecked(int id) {
    try {
        ToggleButton[] toogles = {toogle1, toogle2, toogle3};



        for (int i = 0; i < toogles.length; i++) {
            if (id != i) {
                toogles[i].setEnabled(false);

            } else {
                toogles[i].setEnabled(true);

            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

答案 3 :(得分:0)

尝试以下代码

@Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        switch(buttonView.getId()){
            case R.id.btn1:
                btn2.setEnabled(!isChecked);
                btn3.setEnabled(!isChecked);
            break;
            case R.id.btn2:
                btn1.setEnabled(!isChecked);
                btn3.setEnabled(!isChecked);
            break;
            case R.id.btn3:
                btn1.setEnabled(!isChecked);
                btn2.setEnabled(!isChecked);
            break;
    }
}