You need to enable JavaScript to run this app. Android应用对接OpenWeatherMap API展示天气图标报错咨询
优惠活动
大模型
产品
解决方案
定价
更多

Android应用对接OpenWeatherMap API展示天气图标报错咨询

问题修复方案

报错原因说明

  • 第一个报错:你将imageofWeather.setImageDrawable(drawableResource);写在了switch结构内部、所有case的break之后,所有case匹配成功执行break后都会直接跳出switch,这行代码永远不会被执行,所以系统提示赋值的资源从未被使用。
  • 第二个报错:setImageDrawable()方法要求传入Drawable对象,你传入的是R.drawable.xxx格式的int类型资源ID,方法不匹配。

修改步骤

  1. 调整setImage代码位置,移到switch结构外部,同时替换为接收资源ID的setImageResource()方法
  2. 给drawableResource设置初始默认值,新增default分支处理未知天气情况
  3. 无数据时隐藏天气图标,符合首次打开不展示图标的需求

关键代码修改示例

1. 变量初始化修改

// 初始赋值0代表无图标
int drawableResource = 0;

2. switch逻辑修改

// get actual weather.
switch (data.getWeather().get(0).getIcon()) {
    case WeatherIcon.Sun:
        drawableResource = R.drawable.sun;
        break;
    case WeatherIcon.Cloud1:
        drawableResource = R.drawable.broken_clouds;
        break;
    case WeatherIcon.Cloud2:
        drawableResource = R.drawable.few_clouds;
        break;
    case WeatherIcon.Cloud3:
        drawableResource = R.drawable.scattered_clouds;
        break;
    case WeatherIcon.Rain1:
        drawableResource = R.drawable.small_rain;
        break;
    case WeatherIcon.Rain2:
        drawableResource = R.drawable.shower_rain;
        break;
    case WeatherIcon.Thunder:
        drawableResource = R.drawable.thunderstorm;
        break;
    case WeatherIcon.Snow:
        drawableResource = R.drawable.snow;
        break;
    case WeatherIcon.Mist:
        drawableResource = R.drawable.mist;
        break;
    // 新增默认分支处理未知天气
    default:
        drawableResource = 0;
        break;
}
// 移到switch外部执行图标设置
if (drawableResource != 0) {
    imageofWeather.setImageResource(drawableResource);
    imageofWeather.setVisibility(View.VISIBLE);
} else {
    imageofWeather.setVisibility(View.GONE);
}

3. 无数据分支新增图标隐藏

在data == null的else分支的隐藏逻辑中,新增一行:

imageofWeather.setVisibility(View.GONE);

额外注意事项

如果data.getWeather().get(0).getIcon()返回的是OpenWeatherMap原生的字符串值(比如01d、02n这类),而不是你定义的WeatherIcon枚举,需要把switch的case对应改为字符串匹配规则,否则会无法正确匹配天气类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 00:54:04