Compose 预览报错:java.lang.NoSuchMethodError

为了方便Image的调用,封装年一个Img方法如下:

kotlin 复制代码
@Composable
fun Img(@DrawableRes id: Int) {
    Image(painterResource(id), "")
}

compose预览界面提示Render problem

kotlin 复制代码
java.lang.NoSuchMethodError: 'void com.example.composeapp.common.WidgetExtKt.Img(int, androidx.compose.runtime.Composer, int)'
  at com.example.composeapp.chat.ChatActivityKt.TopToolbar(ChatActivity.kt:61)
  at com.example.composeapp.chat.ChatActivityKt.ChatPageContent(ChatActivity.kt:48)
  at com.example.composeapp.chat.ComposableSingletons$ChatActivityKt$lambda$1376425372$1.invoke(ChatActivity.kt:75)
  at com.example.composeapp.chat.ComposableSingletons$ChatActivityKt$lambda$1376425372$1.invoke(ChatActivity.kt:74)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:122)

提示找不到WidgetExtKt.Img(int, androidx.compose.runtime.Composer, int)这个方法。

原因

加了@Compose 注解的方法,在编译的之后会生成一个额外的方法。

kotlin 复制代码
Img(int id, Composer composer, int changed)

报NoSuchMethodError,说明编译的时候没有生成这个方法。

需要在build.gradle中加上compose的插件,才会在编译时生成对应的方法。

相关推荐
有位神秘人2 小时前
Android中dp与px互相转化的工具类
android
黄林晴2 小时前
Android Room 3.0 来了,这次改得有点狠
android·android jetpack
zh_xuan2 小时前
Android databinding
android·databinding
草莓熊Lotso2 小时前
Linux 进程间通信之命名管道(FIFO):跨进程通信的实用方案
android·java·linux·运维·服务器·数据库·c++
草莓熊Lotso2 小时前
MySQL 表约束核心指南:从基础约束到外键关联(含实战案例)
android·运维·服务器·数据库·c++·人工智能·mysql
鹏多多2 小时前
Flutter使用pretty_qr_code生成高颜值二维码
android·前端·flutter
XiaoLeisj2 小时前
Android 文件与数据存储实战:SharedPreferences、SQLite 与 Room 的渐进式实现
android·java·数据库·ui·sqlite·room·sp
耶叶2 小时前
Android开发:基于SharedPreferences实现的状态缓存
android·kotlin
萝卜大战僵尸3 小时前
Android Studio
android·ide·android studio