前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

作者头像
韩曙亮
发布2023-03-29 14:34:52
1.8K0
发布2023-03-29 14:34:52
举报

文章目录

一、报错信息


Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ;

在这里插入图片描述
在这里插入图片描述

将 Android 的编译版本 和 目标版本 都升级为

30

之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ;

将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 由 28 修改为 30 ;

代码语言:javascript
复制
android {
    compileSdkVersion 30
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.xxx.xxx"
        minSdkVersion 19

        targetSdkVersion 30
        versionCode 1
        versionName "0.1"
	}
}

编译时报错如下 :

代码语言:javascript
复制
Class 'Xxx' is not abstract and does not implement abstract member public abstract fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int): Unit defined in android.view.SurfaceHolder.Callback
在这里插入图片描述
在这里插入图片描述

在 编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为

28

时 , 编译不报上述错误 ;

改了下 Android 编译版本号 , 报了

286

个错误 , 今天逐个解决上述编译错误 ;

二、解决方案


错误分析 :

报错位置是 SurfaceView , 报错的大概含义是没有实现

代码语言:javascript
复制
public abstract fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int): Unit

成员方法 ;

首先 , 该方法肯定是实现的 , 否则之前的编译早就报错了 , 还是 Kotlin 的可空参数问题 ;

下面是开发该 SurfaceView 时 , Android Studio 中自动生成的代码 ,

代码语言:javascript
复制
override fun surfaceChanged(holder: SurfaceHolder?, format: Int, width: Int, height: Int) {

可以看到第一个参数是可空参数 , 这个问号总不会是我打上去的吧 ;

这 Kotlin 相关的 前后冲突的操作 , Android 官方没少干这事 ;

解决方案 : 在 Kotlin 中 , 将所有的重写的函数的可空参数 , 都改为非空参数 , 即删除参数后面的问号 “?” ;

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、报错信息
  • 二、解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com