复制 粘贴 传参数

那城 那楼 那强

批量解决Casting 'findViewById(R.id.X)' to 'X' is redundant

在Android Studio 中build.gradle(Module:app) 如果compileSdkVersion >=26,进行findViewById操作会报 Casting 'findViewById(R.id.X)' to 'X' is redundant This inspection reports unnecessary cast expressions.
这里写图片描述

大意为findViewById前的强制类型转换是多余的。

        mRvMsg = (RecyclerView)findViewById(R.id.rv_msg);
        mEtPort = (EditText) findViewById(R.id.et_port);

产生上边的原因为,在compileSdkVersion >=26后,findViewById内部源码:

    @Nullable
    public <T extends View> T findViewById(@IdRes int id) {
        return getWindow().findViewById(id);
    }

返回值为范型T,且T extends View,因此不用向下强制类型转换。
而compileSdkVersion < 26,其内部源码:

  public View findViewById(int id) {
        throw new RuntimeException("Stub!");
    }

返回值类型为 View,是RecyclerView、EditText等控件的父类,所以必须进行向下的强制类型转换。

如果是新项目,个别几处手动去掉即可,对于更变编译版本的旧项目,且使用了大量的findViewById(没有使用ButterKnife),这时就需要进行批量删除,操作如下:
将鼠标点击到警告的位置,然后按Alt+Enter,弹出修改方法
这里写图片描述
依次选择Cleanup code-Cleanup code on ...进入Specify Inspection Scope
,选择Whole project后确认即可去除项目中全部强制类型转换。
这里写图片描述

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weiqiang_1989/article/details/80347170
文章标签: Android
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

批量解决Casting 'findViewById(R.id.X)' to 'X' is redundant

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭