为什么 Jetpack Compose 预览显示错误的字符串资源?

Why does Jetpack Compose preview show the wrong string resources?

提问人:Eva 提问时间:1/22/2023 更新时间:7/20/2023 访问量:1575

问:

有时,当我在可组合项中使用字符串资源时,预览会显示错误的字符串。它总是适用于文字字符串,只有字符串资源是错误的。该错误不一致。

例如,如果我有这个字符串 .xml:

<resources>
    <string name="app_name">Violit</string>
    <string name="load_topic_failure_message">Something went wrong loading the topic</string>
</resources>

我有这个可组合的:

@Composable
fun TopicFailureContent() {
    Text(stringResource(R.string.load_topic_failure_message))
}

@Preview(showBackground = true)
@Composable
fun TopicFailureContentPreview() {
    TopicFailureContent()
}

它可能会呈现类似“部分选中”或“导航菜单”之类的内容,而不是“加载主题时出错”。

如果我将可组合项更改为:

@Composable
fun TopicFailureContent() {
    Text("Something went wrong loading the topic")
}

它可以正确呈现预览。

看起来预览可能正在渲染附近的字符串,而不是我想要的字符串。字符串资源在测试和运行应用时工作正常。只是预览并不总是有效。

我正在使用 Android Studio Electric Eel 2022.1.1,但我在以前的版本中也遇到了同样的问题。这在 Compose UI 版本 1.2.1 和 1.3.3 上都失败。

知道为什么字符串资源在预览中并不总是有效以及如何修复它吗?

Android Kotlin 资源 android-jetpack-compose-preview

评论

1赞 Karan Sharma 1/22/2023
您可以尝试清洁项目并再次重建吗?如果这不起作用,请尝试清除主目录中的 gradle 缓存。看起来像是与缓存相关的问题。
0赞 rosuh 2/10/2023
同样的问题,我正在使用 ,但是在运行应用程序时,它会呈现完全不同的字符串。Android Studio 长颈鹿 |2022.3.1 Canary 3 Build #AI-223.7571.182.2231.9532861,构建于 2023 年 1 月 27 日 运行时版本:17.0.5+0-17.0.5b762.1-9522829 aarch64 VM:JetBrains s.r.o. 开发的 OpenJDK 64 位服务器虚拟机 macOS 13.2stringResource(R.string.hello_world)
0赞 Eva 2/11/2023
卡兰·夏尔马(Karan Sharma)的解决方案似乎奏效了。当缓存需要失效时,有点痛苦。通常只需清洁和重建即可
0赞 ChocolateChapta 9/23/2023
使用 r8 运行发布版本时,我遇到了同样的问题,但是在构建之前构建 build->clean 也为我解决了这个问题。

答: 暂无答案