Android 单选按钮组,我为什么需要这个?
Android Radio Button Group, why I need this?
为什么我需要添加 if (null != rb && checkedId > -1),如果我删除代码,程序仍然有效。这行代码有什么好处?
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if (null != rb && checkedId > -1) {
switch (rb.getId()){
case R.id.radioFast:
mAnimOption = FAST;
break;
case R.id.radioSlow:
mAnimOption = SLOW;
break;
case R.id.radioNone:
mAnimOption = NONE;
break;
}
// End switch block
mEditor.putInt("anim option", mAnimOption);
}
}
});
好处是避免可能导致您的 android 应用程序崩溃的空指针异常。
if (null != rb && checkedId > -1)
它用于避免崩溃,因此每当调用 NULL 或用户 checkedId 为 NULL 时,它都会抛出错误,并避免不必要的崩溃。
按照开发人员的说法,我们应该以这种方式编写代码,在 运行 APP 期间不会出现崩溃。
正如其他答案所说,需要避免 NullPointerException
我同意他们的看法。
但根据您的代码,这不是必需的。您不需要检查 null
。这是为什么?
方法
public void onCheckedChanged(RadioGroup group, int checkedId) {}
returns group
类型为 RadioGroup
的对象,当前选择的 RadioButton
ID 为 checkedId
。因此您不需要检查 null,因为您已经有 checkedId
。
所以直接使用switch
语句来比较预期的情况。
如果 checkedId
与大小写不匹配(即 -1 或其他值)使用 default
大小写。
为什么我需要添加 if (null != rb && checkedId > -1),如果我删除代码,程序仍然有效。这行代码有什么好处?
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if (null != rb && checkedId > -1) {
switch (rb.getId()){
case R.id.radioFast:
mAnimOption = FAST;
break;
case R.id.radioSlow:
mAnimOption = SLOW;
break;
case R.id.radioNone:
mAnimOption = NONE;
break;
}
// End switch block
mEditor.putInt("anim option", mAnimOption);
}
}
});
好处是避免可能导致您的 android 应用程序崩溃的空指针异常。
if (null != rb && checkedId > -1)
它用于避免崩溃,因此每当调用 NULL 或用户 checkedId 为 NULL 时,它都会抛出错误,并避免不必要的崩溃。
按照开发人员的说法,我们应该以这种方式编写代码,在 运行 APP 期间不会出现崩溃。
正如其他答案所说,需要避免 NullPointerException
我同意他们的看法。
但根据您的代码,这不是必需的。您不需要检查 null
。这是为什么?
方法
public void onCheckedChanged(RadioGroup group, int checkedId) {}
returns group
类型为 RadioGroup
的对象,当前选择的 RadioButton
ID 为 checkedId
。因此您不需要检查 null,因为您已经有 checkedId
。
所以直接使用switch
语句来比较预期的情况。
如果 checkedId
与大小写不匹配(即 -1 或其他值)使用 default
大小写。