单击两次以检查单选按钮?

时间:2013-03-26 19:16:16

标签: android button radio uncheck

我正在尝试构建一个测试应用程序,我正在使用单选按钮来选择A,B,C,D。我正在尝试计算结果 - >例如,当按A增加1时,按B增加2,依此类推。我最初使用的是Radio Group,但据我所知,如果用户试图将问题的答案从A更改为B,则递增的结果将为3,而不是预期的2。所以我切换到Radio Buttons并尝试以下代码:

      rb1.setOnCheckedChangeListener(new 
         android.widget.CompoundButton.OnCheckedChangeListener (){ 

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            i++;
            if(rb2.isChecked())
            { 
                i--;
                rb2.setChecked(false);                  
            }

        }
            });

    rb2.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener (){


        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            i++;

            if(rb1.isChecked())
            { 
                i--;
                rb2.setChecked(false);                          
            }
        }
            });

现在必须单击第二个单选按钮才能进行检查。这是一个错误,是否可以修复。我需要按钮在第一次点击后改变状态。欢迎所有的想法和建议。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以更改代码以使用switch语句(如其中一条评论中所述),但是如果您想继续使用所拥有的内容,并回答您的问题。在您的rb2代码中,您说如果选中rb1,则将rb2设置为false。因此,如果您单击rb1(现在已经选中/推送)并且在第一次取消选中时单击rb2,则第二次保持选中状态。

坚持你的编码风格和程序:

    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        i++;

        if(rb1.isChecked())
        { 
            i--;
            rb2.setChecked(false);                          
        }
    }

应该是:

    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        i++;

        if(isChecked && rb1.isChecked())
        { 
            i--;
            rb1.setChecked(false);                          
        }

        rb2.setChecked(isChecked);
    }

对您的rb1方法进行类似的更改。