12

随着 AS Arctic Fox Jetpack Compose 预览版的第一个补丁停止工作。

我在所有预览中都遇到了这个错误 - 甚至是旧的,它在一段时间前运行良好:

android.content.res.Resources$NotFoundException: Could not resolve resource value: [some hex value]

这里有什么快速解决方法吗?清除缓存和通常的东西不起作用。


编辑:
看起来问题并不总是存在。一些预览开始工作,而另一些仍然失败。

编辑2:
这发生在动态功能模块中,当需要来自主模块的资源或painterResource()正在使用时(即使是来自同一模块的资源也将被显示)。

4

3 回答 3

2

动态模块项目也存在同样的问题。受上述答案的启发,我在等待 Compose 团队解决此问题时做了另一个临时解决方法。

import androidx.compose.ui.res.stringResource as originalStringResource

@Composable
@ReadOnlyComposable
fun stringResourceSafe(@StringRes id: Int): String =
    if (BuildConfig.DEBUG) {
        val resources = LocalContext.current.resources
        try {
            resources.getString(id)
        } catch (e: Resources.NotFoundException) {
            "missing res."
        }
    } else {
        originalStringResource(id)
    }
于 2022-01-06T11:12:59.607 回答
0

作为一种临时的破解解决方法,我这样做是为了克服错误并预览 UI 元素。

//import androidx.compose.ui.res.stringResource

fun stringResource(id: Int): String {
    when (id) {
        R.string.res_id -> return "Foo"
        ...
    }
    return "missing res_id"
}
于 2021-11-08T18:38:50.187 回答
0

这在 AS Bumblebee 补丁 2 中得到了修复。

于 2021-08-19T11:53:51.057 回答