You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中Home Widget的ImageView资源切换失效问题求助

安卓桌面Widget ImageView资源切换失败解决方法

核心问题修正:getIdentifier参数错误

你当前调用getIdentifier时第三、四个参数传了null,这会导致系统无法定位到应用资源目录,必须传入应用包名作为第三个参数,第二个参数固定为"drawable"(对应资源存放目录)。

修改后的WidgetProvider.kt代码:

val ivCond = widgetData.getString("ivCond", "defaultcond")
// 通过context.packageName获取当前应用包名,准确定位资源
val drawableId: Int = context.resources.getIdentifier(ivCond, "drawable", context.packageName)
// 处理资源找不到的情况,返回0时设置默认图兜底
if (drawableId == 0) {
    setImageViewResource(R.id.imageView, R.drawable.defaultcond)
} else {
    setImageViewResource(R.id.imageView, drawableId)
}

额外检查项

  • 图片命名规范:确保res/drawable下的图片文件名仅包含小写字母、数字或下划线,不能用大写、中文或特殊字符,比如rainy_day合法,RainyDay或雨天会导致资源查找失败。
  • Flutter侧数据验证:确认code(widget.weather.currentWeather!.weathercode)返回的字符串和目标图片文件名完全一致,无拼写错误(比如多空格、字母大小写不匹配)。
  • 初始状态兜底:保留XML布局里的android:src="@drawable/defaultcond",避免Widget首次加载时出现空白。

内容的提问来源于stack exchange,提问作者Qteam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:15:56