如果选中另一个复选框,则复选框执行某些操作(android)

时间:2014-02-07 22:14:07

标签: android checkbox

我想根据用户检查的复选框进行一些算术运算。我想要一些复选框只在选中另一个复选框时才添加,但我似乎无法检查是否在onCheckedChange方法中检查了不同的复选框。

以下是我的xml代码的相关部分:

<CheckBox android:id="@+id/cbox_affective_dx"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:text="@string/cbox_affective_dx"
    android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/cbox_other_dx"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:text="@string/cbox_other_dx"
    android:onClick="onCheckboxClicked"/>

这是我正在尝试使用的代码。正如您所看到的,我正在尝试根据他们点击的内容添加或减去该人的CFIscore。对于第二个复选框,如果单击第一个复选框,我只想添加或减去其分数。否则我希望它什么都不做。 Eclipse告诉我cbox_affective_dx无法解析为变量。

public class Checklist extends Activity {

int CFIscore = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_checklist);

    final CheckBox checkBox = (CheckBox) findViewById(R.id.cbox_affective_dx);


    //On checked change listener
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch(buttonView.getId()){
                       case R.id.cbox_affective_dx:
                           //add 2
                           if (isChecked) {
                               CFIscore += 2;
                           } else if (isChecked == false) {
                               CFIscore -= 2;
                           }
                       break;
                       case R.id.cbox_other_dx:
                           if (isChecked) {
                               if (cbox_affective_dx.isChecked == false)
                                   CFIscore += 1;
                               else if (cbox_affective_dx.isChecked == true);
                           } else if (isChecked == false) {
                               if (cbox_affective_dx.isChecked == false)
                                   CFIscore -= 1;
                             else if (cbox_affective_dx.isChecked == true);

                           }
                         break;

非常感谢您提供的任何帮助!

非常感谢。

1 个答案:

答案 0 :(得分:0)

只需找到并检查是否已选中:

CheckBox my_conditional_checkbox = (CheckBox) findViewById(R.id.my_conditional_checkbox_id);
if (my_condicional_checkbox.isChecked()) {
  // Do the stuff you need
  ...
}
else {
  Toast.makeText(this, "Sorry, my first checkbox is not checked!", Toast.LENGTH_LONG).show();
}