为了方便Image的调用,封装年一个Img方法如下:
@Composable
fun Img(@DrawableRes id: Int) {
Image(painterResource(id), "")
}
compose预览界面提示Render problem
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 注解的方法,在编译的之后会生成一个额外的方法。
Img(int id, Composer composer, int changed)
报NoSuchMethodError,说明编译的时候没有生成这个方法。
需要在build.gradle中加上compose的插件,才会在编译时生成对应的方法。