我想根据用户检查的复选框进行一些算术运算。我想要一些复选框只在选中另一个复选框时才添加,但我似乎无法检查是否在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;
非常感谢您提供的任何帮助!
非常感谢。
答案 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();
}