3

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

      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);                          
            }
        }
            });

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

4

1 回答 1

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 方法进行类似的更改。

于 2013-03-26T19:27:21.350 回答