【发布时间】:2022-01-04 12:49:58
【问题描述】:
我使用可组合函数图像。我需要根据它获得的变量来使用特定的图像。 硬编码时它看起来像下面的代码,这适用于特定图像。
Image(
painterResource(id = R.drawable.carrot),
contentDescription = "carrot",
)
问题是我希望它像下图一样工作,其中 recipe.image 会根据它从数据库中获取的内容而变化。
Image(
painterResource(id = recipe.image),
contentDescription = "recipe.name",
)
不知何故,它需要本地保存的可绘制对象的确切路径。
我尝试过的: 我尝试将 R.drawable.carrot 作为整数直接上传到数据库,它将其保存为 2400440340 之类的东西,当这个整数进入painterResource 时它会崩溃。 我尝试将“R.drawable.carrot”直接作为字符串保存到数据库中,但这也不起作用,因为画家需要一个整数。
我能在这个网站上找到这个问题的唯一建议是 11 年前的这个答案:
int drawableId = getResources().getIdentifier(drawablename, "drawable", getPackageName());
imageview.setImageResource(drawableId);
我似乎找不到函数 getResources 或 getIdentifier。
【问题讨论】:
-
getResources在Context上调用,在 Compose 中您可以使用LocalContext.current获取它。此外,这看起来像是您之前问题的演变 - 下次请不要删除它,只需编辑它。 -
谢谢!不习惯用栈,一头雾水,不小心删帖了
-
没问题!在这种情况下您可以取消删除它,但现在不再需要了,因为您有这个。
标签: android kotlin android-jetpack-compose