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
相关产品推荐
相关产品推荐

