Android Radio Button Group,为什么我需要这个?

时间:2017-12-06 05:32:59

标签: java android radio-button radio-group

为什么我需要添加 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);

            }

        }
    });

3 个答案:

答案 0 :(得分:1)

好处是避免nullpointerexception,这可能导致您的Android应用程序崩溃。

答案 1 :(得分:0)

if (null != rb && checkedId > -1)

它用于避免崩溃,因此每当调用NULL或用户checkedId为NULL时,它都会抛出错误,并避免不必要的崩溃。

根据开发者的说法,我们应该以这种方式制作代码,在APP运行期间不会出现崩溃。

答案 2 :(得分:0)

正如其他答案所说,需要避免NullPointerException我同意他们的意见。

但根据你的代码,它不是必需的。您无需检查null。这是为什么?

方法

public void onCheckedChanged(RadioGroup group, int checkedId) {}

返回group类型的RadioGroup对象,当前选择的RadioButton ID为checkedId。因此,您不需要检查null,因为您已经拥有checkedId

因此,直接使用switch语句来比较预期的案例。

如果checkedId与案例不匹配(即-1或其他值),请使用default案例。