我正在编写一个应用程序,其中输出的选择取决于所选的复选框。我有4个复选框,用于选择不同的过滤器。
private String x=null;
public void onCheckboxClicked(View view) {
CheckBox check1 = (CheckBox) findViewById(R.id.checkbox_OK);
CheckBox check2 = (CheckBox) findViewById(R.id.checkbox_NOK);
CheckBox check3 = (CheckBox) findViewById(R.id.checkbox_CHECK);
CheckBox check4 = (CheckBox) findViewById(R.id.checkbox_ALLOK);
if (check1.isChecked()) {
x = "0000";
Log.d(TAG, x);
} else if (check2.isChecked()) {
x = "1111";
Log.d(TAG, x);
} else if (check3.isChecked()) {
x = "8888";
Log.d(TAG, x);
} else if (check4.isChecked()) {
x = "";
Log.d(TAG, x);
}
else{x=""; }
}
如果没有单击任何复选框,如何设置默认值?我尝试初始化传递过滤器值的String x,但是当我尝试显示结果时没有选中任何复选框,应用程序崩溃。
答案 0 :(得分:1)
如果没有单击任何复选框,如何设置默认值
使用默认值
初始化变量x = "default_value";
if (check1.isChecked()) {
x = "0000";
Log.d(TAG, x);
} else if (check2.isChecked()) {
x = "1111";
Log.d(TAG, x);
} else if (check3.isChecked()) {
x = "8888";
Log.d(TAG, x);
} else if (check4.isChecked()) {
x = "";
Log.d(TAG, x);
}
答案 1 :(得分:0)
选项1: 使用默认值
初始化StringString x = "myDefaultValue";
选项2:使用else,如果没有复选框isChecked,那么你进入else
if (check1.isChecked()) {
x = "0000";
Log.d(TAG, x);
} else if (check2.isChecked()) {
x = "1111";
Log.d(TAG, x);
} else if (check3.isChecked()) {
x = "8888";
Log.d(TAG, x);
} else if (check4.isChecked()) {
x = "";
Log.d(TAG, x);
} else{
x = "default value";
Log.d(TAG, x);
}
您得到的错误是NullPointerExeption,因为您使用null初始化String。使用这两个选项之一将解决问题。