文章目录

  • 一、报错信息
  • 二、报错分析
  • 三、解决方案

一、报错信息


最近处理支持库 , 将所有的支持库都升级到了 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 参数 )相关推荐

  1. 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( Not enough information to infer type variable T )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Kotlin 代码中调用 findViewById(R.id.button) 代码 , 编译时报如下错误信息 : Not enough info ...

  2. 转载: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 ...

  3. Android Studio Arctic Fox 新版本不能 allprojects 报错问题

    最近升级到Android Studio Arctic Fox 2020.3.1 Patch版本,发现这个问题,一些第三方库没有引用成, 原因:之前的项目build.gradle文件配置里面的allpr ...

  4. 【错误记录】Flutter 使用 MediaQuery 适配全面屏报错 ( No MediaQuery widget ancestor found. )

    文章目录 一.报错信息 二.解决方案 一.报错信息 需要使用 MediaQuery 获取当前的 Padding ; import 'package:flutter/material.dart';/// ...

  5. ROS总结 rosdep update时 遇到了timeout报错

    ROS总结 rosdep update时 遇到了timeout报错 1. rosdep update时 遇到了timeout报错 2. 执行sudo rosdep init时遇到的报错:Website ...

  6. 关于Android Studio中点9图的编译错误问题:Some file crunching failed

    原文地址:http://www.jianshu.com/p/cb3db3a0bd0d Android中的点9图想必大家都非常熟悉了,能够指定背景图片的缩放区域和文本内容的显示区域,常见如QQ聊天界面的 ...

  7. android studio 混淆jar,android studio如何生成混淆代码的jar

    释放双眼,带上耳机,听听看~! 今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android s ...

  8. android studio如何生成混淆代码的jar

    今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android studio导入后可以看所有的源码 ...

  9. Android Studio 工具:Lint 代码扫描工具(含自定义lint)

    什么是 Lint Android Lint 是 SDK Tools 16(ADT 16)开始引入的一个代码扫描工具,通过对代码进行静态分析,可以帮助开发者发现代码质量问题和提出一些改进建议.除了检查 ...

最新文章

  1. Linux centos6.5 64下oracle10g_静默安装完整版
  2. 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤
  3. matlab cell取一列,MATLAB cell struct
  4. 电脑入门完全自学手册_「新书推荐」新能源汽车维修完全自学手册
  5. linux nslookup 解析不到dns_涉及DNS的简单操作,只看这一篇就够了
  6. 查看mysql状态常用命令
  7. C# DllImport的用法(转)
  8. python对象列表转换为字典_python实现class对象转换成json/字典的方法
  9. java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能
  10. matlab虚拟现实之在V-Realm Builder2中建立父子关系
  11. Selenium(二)——webdriver 开始
  12. 仿真软件都在这里了!20+国内外自动驾驶仿真软件大盘点
  13. 单向可控硅的工作原理
  14. java 类型通配符_通配符类型
  15. 基于二阶矩阵的最优化问题(二)(附matlab代码)
  16. 十大概念:每个软件工程师的必备
  17. 合作模式歌利亚机器人_《歌利亚》画面战斗及机器人制作试玩图文心得 歌利亚好玩吗...
  18. 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
  19. /deep/深度作用域选择器
  20. 2022年值得关注的22项新兴技术

热门文章

  1. Oracle For Linux安装脚本
  2. “MIDI机器狗”的木马正在疯狂传播
  3. 这样就可以很方便的知道明天的天气了
  4. 【转载】Hyperledger学习小结
  5. 如何让SQLServer的 itemNum 字段 按照数字大小顺序排序
  6. JZOJ5922. 【NOIP2018模拟10.23】sequence
  7. Latex常用数学符号
  8. oracle数据库数据导入导出步骤(入门)
  9. 最大整数(Noip1998连接多位数)
  10. Akka Cluster原理与应用