【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )
文章目录
- 一、报错信息
- 二、报错分析
- 三、解决方案
一、报错信息
最近处理支持库 , 将所有的支持库都升级到了 28.0.028.0.028.0.0 ;
implementation 'com.android.support:recyclerview-v7:28.0.0'
凡是 Kotlin 语言涉及到的支持库代码 , 出现了一堆报错 ;
二、报错分析
此处继承了 RecyclerView.ItemDecoration 类 , 重写了 getItemOffsets 方法 ,
object : RecyclerView.ItemDecoration() {override fun getItemOffsets(outRect: Rect?, view: View?, parent: RecyclerView?, state: RecyclerView.State?) {super.getItemOffsets(outRect, view, parent, state)
}
注意重写的方法中 , 参数类型
- outRect: Rect?
- view: View?
- parent: RecyclerView?
- state: RecyclerView.State?
都是可空类型 ;
查看 ItemDecoration 真实代码 , 其中的 getItemOffsets 方法的四个参数都是非空类型 , 添加了 @NonNull 注解 , 因此这里必须传入非空参数 , 继承时继承为可空参数 , 肯定报错 , 参数类型不一致 ;
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.getItemOffsets(outRect, ((RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent);}
ItemDecoration 完整代码参考 :
public abstract static class ItemDecoration {public ItemDecoration() {}public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.onDraw(c, parent);}/** @deprecated */@Deprecatedpublic void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent) {}public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.onDrawOver(c, parent);}/** @deprecated */@Deprecatedpublic void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent) {}/** @deprecated */@Deprecatedpublic void getItemOffsets(@NonNull Rect outRect, int itemPosition, @NonNull RecyclerView parent) {outRect.set(0, 0, 0, 0);}public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.getItemOffsets(outRect, ((RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent);}}
三、解决方案
Google 在之前的支持库方法的参数中 , 没有添加 @NonNull 注解 , 在 28.0.028.0.028.0.0 版本中 , 添加了该注解 , 导致了继承不兼容的情况 ;
修改方法是将所有的参数类型都设置为非空类型 , 删除每个参数中的问号即可 ;
【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )相关推荐
- 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( Not enough information to infer type variable T )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Kotlin 代码中调用 findViewById(R.id.button) 代码 , 编译时报如下错误信息 : Not enough info ...
- 转载:Android Studio 3.1.2 新项目报错 AAPT2 error: check logs for details (Gradle 3.1.2)
转载自 https://blog.csdn.net/u011618035/article/details/80574645 原本好好的项目,突然有一天打开就开始报错AAPT2 error: check ...
- Android Studio Arctic Fox 新版本不能 allprojects 报错问题
最近升级到Android Studio Arctic Fox 2020.3.1 Patch版本,发现这个问题,一些第三方库没有引用成, 原因:之前的项目build.gradle文件配置里面的allpr ...
- 【错误记录】Flutter 使用 MediaQuery 适配全面屏报错 ( No MediaQuery widget ancestor found. )
文章目录 一.报错信息 二.解决方案 一.报错信息 需要使用 MediaQuery 获取当前的 Padding ; import 'package:flutter/material.dart';/// ...
- ROS总结 rosdep update时 遇到了timeout报错
ROS总结 rosdep update时 遇到了timeout报错 1. rosdep update时 遇到了timeout报错 2. 执行sudo rosdep init时遇到的报错:Website ...
- 关于Android Studio中点9图的编译错误问题:Some file crunching failed
原文地址:http://www.jianshu.com/p/cb3db3a0bd0d Android中的点9图想必大家都非常熟悉了,能够指定背景图片的缩放区域和文本内容的显示区域,常见如QQ聊天界面的 ...
- android studio 混淆jar,android studio如何生成混淆代码的jar
释放双眼,带上耳机,听听看~! 今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android s ...
- android studio如何生成混淆代码的jar
今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android studio导入后可以看所有的源码 ...
- Android Studio 工具:Lint 代码扫描工具(含自定义lint)
什么是 Lint Android Lint 是 SDK Tools 16(ADT 16)开始引入的一个代码扫描工具,通过对代码进行静态分析,可以帮助开发者发现代码质量问题和提出一些改进建议.除了检查 ...
最新文章
- Linux centos6.5 64下oracle10g_静默安装完整版
- 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤
- matlab cell取一列,MATLAB cell struct
- 电脑入门完全自学手册_「新书推荐」新能源汽车维修完全自学手册
- linux nslookup 解析不到dns_涉及DNS的简单操作,只看这一篇就够了
- 查看mysql状态常用命令
- C# DllImport的用法(转)
- python对象列表转换为字典_python实现class对象转换成json/字典的方法
- java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能
- matlab虚拟现实之在V-Realm Builder2中建立父子关系
- Selenium(二)——webdriver 开始
- 仿真软件都在这里了!20+国内外自动驾驶仿真软件大盘点
- 单向可控硅的工作原理
- java 类型通配符_通配符类型
- 基于二阶矩阵的最优化问题(二)(附matlab代码)
- 十大概念:每个软件工程师的必备
- 合作模式歌利亚机器人_《歌利亚》画面战斗及机器人制作试玩图文心得 歌利亚好玩吗...
- 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
- /deep/深度作用域选择器
- 2022年值得关注的22项新兴技术