Jetpack Compose 预览版在带有补丁 1 的 Arctic Fox 中停止工作
Jetpack Compose preview stopped working in Arctic Fox with Patch 1
随着 AS Arctic Fox Jetpack Compose 的第一个补丁,预览停止工作。
我在 所有 预览中遇到此错误 - 甚至是较旧的预览,前一段时间运行良好:
android.content.res.Resources$NotFoundException: Could not resolve resource value: [some hex value]
这里有什么快速修复方法吗?清除缓存和通常的东西不起作用。
编辑:
看起来问题并不总是存在。一些预览开始工作,而其他的仍然失败。
编辑 2:
这发生在动态功能模块中,当需要来自主模块的资源或正在使用 painterResource()
时(即使要显示来自同一模块的资源)。
这已在 AS Bumblebee 补丁 2 中修复。
作为临时解决方法,我这样做是为了克服错误并预览 UI 元素。
//import androidx.compose.ui.res.stringResource
fun stringResource(id: Int): String {
when (id) {
R.string.res_id -> return "Foo"
...
}
return "missing res_id"
}
动态模块项目也有同样的问题。
受上述答案的启发,我在等待 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)
}
随着 AS Arctic Fox Jetpack Compose 的第一个补丁,预览停止工作。
我在 所有 预览中遇到此错误 - 甚至是较旧的预览,前一段时间运行良好:
android.content.res.Resources$NotFoundException: Could not resolve resource value: [some hex value]
这里有什么快速修复方法吗?清除缓存和通常的东西不起作用。
编辑:
看起来问题并不总是存在。一些预览开始工作,而其他的仍然失败。
编辑 2:
这发生在动态功能模块中,当需要来自主模块的资源或正在使用 painterResource()
时(即使要显示来自同一模块的资源)。
这已在 AS Bumblebee 补丁 2 中修复。
作为临时解决方法,我这样做是为了克服错误并预览 UI 元素。
//import androidx.compose.ui.res.stringResource
fun stringResource(id: Int): String {
when (id) {
R.string.res_id -> return "Foo"
...
}
return "missing res_id"
}
动态模块项目也有同样的问题。 受上述答案的启发,我在等待 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)
}