如果检查特定复选框,则执行某些操作,如果单击任何其他复选框,请执行其他操作

时间:2015-03-14 19:31:32

标签: android checkbox

我正在创建此活动,我请求用户使用复选框查找正确的答案。我的布局有多个复选框,但其中一个是正确的。主要思想是让用户3尝试猜测正确的答案(一个复选框)。我设法实现一个代码,当单击正确的复选框来执行某些操作时,但是当用户单击任何其他复选框时,我无法使代码生效。

我的代码如下(当前实现了正确的复选框,但任何其他复选框的代码都不起作用) 的更新

CheckBox centerBack, checkBox1;
int counts = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tennis_facts);


    CheckBox centerBack = (CheckBox) findViewById(R.id.centerBack);
    CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
    centerBack.setOnClickListener(this);
    checkBox1.setOnClickListener((this);
}
@Override
public void onClick(View v) {
    switch (v.getId()){
         case R.id.centerBack: 
              Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_SHORT).show();
              break;
          case R.id.checkBox1:
              Toast.makeText(getApplicationContext(), "incorrect", Toast.LENGTH_SHORT).show();
              break;

    }

}

2 个答案:

答案 0 :(得分:1)

你的意思是下面这些代码不起作用,对吧?

else{
            counts ++;
            DisplayToast("Incorrect Answer" + counts);
    }

因为您只通过代码为此复选框设置了侦听器:

checkBox.setOnClickListener(new View.OnClickListener());

其他复选框尚未设置 setOnClickListener 。这就是为什么当别人选中复选框时,Android没有得到这个事件

应该这样做:

checkBox.setOnClickListener(this);
checkBox2.setOnClickListener(this);
checkBox3.setOnClickListener(this);
checkBox4.setOnClickListener(this);

你还应该实现OnClickListener接口并覆盖onClick方法,如下所示:

@Override
public void onClick(View v) {
    switch (v.getId()){
         case R.id.checkBox: 
              //your code:
              break;
          case R.id.checkBox2:
              //your code:
              break;
           case R.id.checkBox3:
              //your code:
              break;
           case R.id.checkBox4:
              //your code:
              break;
    }

}

答案 1 :(得分:0)

尝试在Activity中实现View.OnClickListener接口。然后添加到每个复选框:

checkBox.setOnClickListener(this);

在onClick中:

@Override
public void onClick(View v) {
    switch (v.getId()){
         case R.id.checkBox1:
              //your code:
              break;
          case R.id.checkBox2:
              //your code:
              break;
               //so on...
    }

}