【问题标题】:Android Radio Button Group, why I need this?Android单选按钮组,为什么我需要这个?
【发布时间】:2018-05-19 22:20:18
【问题描述】:

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

            }

        }
    });

【问题讨论】:

  • 不需要使用这条线。它只会检查电台组的选择和选择的ID

标签: java android radio-button radio-group


【解决方案1】:

好处是避免空指针异常,这会导致你的安卓应用崩溃。

【讨论】:

    【解决方案2】:
    if (null != rb && checkedId > -1)
    

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

    按照开发者的说法,我们应该以这种方式编写代码,在 APP 运行过程中不会出现崩溃。

    【讨论】:

      【解决方案3】:

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

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

      方法

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

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

      所以直接使用switch 语句来比较预期的情况。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 2015-03-09
        • 2011-07-20
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多