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的插件,才会在编译时生成对应的方法。

相关推荐
执明wa2 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
404_coder2 小时前
源码视角下的 Android 开机流程:从 Zygote、SystemServer 到 Launcher
android
二流小码农3 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
用户69371750013843 小时前
从代码生产者到 AI 协作者:软件工程师的角色重构
android·前端·后端
GitLqr4 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
sg_knight4 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
爱笑鱼4 小时前
Binder(四):ioctl(BINDER_WRITE_READ) 之后,事务怎样到达目标进程?
android
AFinalStone4 小时前
Android 7系统休眠唤醒(二)开机全链路—BootROM到Launcher
android·电源管理·休眠唤醒
Mr YiRan4 小时前
Android NDK开发之统计到未被回收的图片
android