android - 在 Jetpack Compose @Preview 中使用 moshi 时出现渲染问题
问题描述
我正在尝试使用Jetpack Compose 的 @Preview 块中的Moshi将假 JSON 字符串解析为 Object,下面是我的代码:
@Preview("Post Card")
@Composable
fun PostCardPreview() {
val moshi = Moshi.Builder().build()
val type: Type =
Types.newParameterizedType(List::class.java, Post::class.java)
val jsonAdapter = moshi.adapter<List<Post>>(type)
val posts = jsonAdapter.fromJson(fakePostDatas) ?: listOf()
TestAppTheme {
Surface {
PostCard(post = posts[0])
}
}
}
我遇到了以下问题:
java.lang.NoSuchMethodError: 'com.squareup.moshi.JsonAdapter com.squareup.moshi.Moshi.adapter(java.lang.reflect.Type, java.util.Set, java.lang.String)'
at me.yaoandy107.dribbbleone.model.PostJsonAdapter.<init>(PostJsonAdapter.kt:29)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at com.squareup.moshi.StandardJsonAdapters.generatedAdapter(StandardJsonAdapters.java:246)
at com.squareup.moshi.StandardJsonAdapters$1.create(StandardJsonAdapters.java:62)
at com.squareup.moshi.Moshi.adapter(Moshi.java:130)
at com.squareup.moshi.Moshi.adapter(Moshi.java:64)
at com.squareup.moshi.CollectionJsonAdapter.newArrayListAdapter(CollectionJsonAdapter.java:52)
at com.squareup.moshi.CollectionJsonAdapter$1.create(CollectionJsonAdapter.java:36)
at com.squareup.moshi.Moshi.adapter(Moshi.java:130)
at com.squareup.moshi.Moshi.adapter(Moshi.java:64)
at me.yaoandy107.dribbbleone.ui.home.PostCardKt.PostCardPreview(PostCard.kt:85)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at androidx.compose.ui.tooling.preview.PreviewUtilsKt.invokeComposableMethod(PreviewUtils.kt:141)
at
......
我是 Jetpack Compose 的新手,我是否以错误的方式使用它?还是只是不能在@Preview 中使用 codegen 类?
解决方案
推荐阅读
- mongodb - Spring Boot MongoDB 聚合 $in 不起作用
- swift - 更新 xcode 后出现 Swift 编译错误
- html - 无法从嵌入的 YouTube 视频中删除黑条
- java - 如何在没有库的情况下将双精度数舍入到指定的小数位?
- android - 无法解析 org.hamcrest:hamcrest-core:{strictly 1.3} 要求:项目:TestApp
- typescript - 使用值的类型并在相同的结构中创建另一个对象,但使用字符串作为值以及深度嵌套
- xamarin.forms - 将图片从手机上传到服务器
- ios - 在较新的 iOS 版本上调试 React Native White Screen of Death
- excel - 将 xlPrimary 和 xlSecondary 轴设置为百分比不起作用
- flutter - 如何为互联网连接事件注册应用程序侦听器?