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 大小写。