检查单选按钮android的状态并计算答案

时间:2011-06-03 16:51:06

标签: android radio-button

我按照@CommonsWare告诉我的方式编辑了代码 当我尝试点击r1时,我强行关闭,问题是它似乎按钮[i] .isChecked()没有;工作 - >修好了

我有final RadioButton[] buttons = {r1,r3,r5,r7};

我想算一下(基本上是答案)

public void onClick(View view){


    checkStates(buttons);}
}
private void  checkStates(RadioButton[] buttons) { 
     for (int i = 0; i < 4; i++) {
        if (buttons[i].isChecked())

             yes++;}
     if (yes>=3){
      Intent intent=new Intent(this,AnotherClass.class);
        startActivity(intent);
  }

  }

基本上我有,没有单选按钮。我想计算是的答案,如果用户改变主意,则检查否减少是

r1 r3 r5等是“是”的答案 r2 r4 r6是“否”答案

我的方法可能是错的,因为我是新手,但如果有人帮助我,我会发布整个事情让人们看。

请帮忙!

好的,我检查了日志猫,我收到以下错误(显然哪里但我不知道为什么以及如何实现此功能)

Android Runtime:  Uncaught handler :thread main exiting due to uncaught exception

java.lang.NullPointerException  
RadioButtons.checkStates(RadioButtons.java:49) --> here  : if (buttons[i].isChecked()) 
RadioButtons.onClick(RadioButtons.java:42)--> here:    checkStates(buttons);

编辑:问题 - @ CommonsWare指出的方式 - buttons没有被初始化,我得到了NullPointerException所以我之前用这个改变了代码:RadioButton[]buttons =new RadioButton[3];给了数组的大小

 public void onClick(View view){
checkStates(buttons);
      }
private void  checkStates(RadioButton[] buttons) { 
        buttons[0]=rb1;
        buttons[1]=rb3;
        buttons[2]=rb5;

        if (buttons[i].isChecked()){

               yes++;}
           tv.setText("Result:"+yes);

    }

这一次的问题是它仍然计算点击次数而不是“是”答案 我有以下问题需要解决

  • 计算“是”的答案是肯定的++

  • 如果用户第二次点击,请不要计算

  • 如果用户将注意力从“是”改为“否”,则减少“是”

  • 如果用户按下“否​​”则不计算任何内容(我的应用程序的重要部分是计算是的答案)

2 个答案:

答案 0 :(得分:1)

  

如何检查android中单选按钮的状态?

致电isChecked()。但你已经知道了。

  

我想算一下

setChecked(true)上调用RadioButtonisChecked()返回true是没有意义的,因为RadioButton已经检查过了。

  

我想计算肯定的答案,如果用户改变主意,则检查否减少是

// if r1 or r3 are checked{替换为if buttons[i].isChecked() {

答案 1 :(得分:0)

首先,您需要使用RadioGroup对每个Yes和No对进行分组,以便不允许在同一时间选择Both。

这是一个很好的起始资源 http://developer.android.com/resources/tutorials/views/hello-formstuff.html#RadioButtons

阅读此页面,我们将回答您的所有问题,包括如何设置OnClickListener

希望这有帮助