开关输入错误的情况?

Switch entering wrong case?

下图说明了一切。我正在调试我的 android 应用程序,这个 Switch 语句输入了错误的 CASE,请查看相关变量值的手表。仅供参考,HOURLY 和 WARNING 是这样定义的常量

private static final int CURRENTLY = 0;
private static final int HOURLY = 1;
private static final int DAILY = 2;
private static final int DAY = 3;
private static final int WARNING = 4;

这是怎么回事:O

提前致谢

编辑:

    @Override
public int getItemViewType(int position) {
    DisplayWeatherInfo weatherInfoObject = weatherInfo.get(position);

    if (weatherInfoObject instanceof Currently) {
        return CURRENTLY;
    } else if (weatherInfoObject instanceof Hourly) {
        return HOURLY;
    } else if (weatherInfoObject instanceof Daily) {
        return DAILY;
    } else if (weatherInfoObject instanceof Day) {
        return DAY;
    } else if (weatherInfoObject instanceof Warning) {
        return WARNING;
    }
    return -1;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    switch (viewType) {
        case CURRENTLY:
            view = this.inflater.inflate(R.layout.currently_view, parent, false);
            return new CurrentlyViewHolder(view);
        case HOURLY:
            view = this.inflater.inflate(R.layout.hourly_view, parent, false);
            return new HourlyViewHolder(view);
        case DAILY:
            view = this.inflater.inflate(R.layout.daily_view, parent, false);
            return new DailyViewHolder(view);
        case DAY:
            view = this.inflater.inflate(R.layout.day_view, parent, false);
            return new DayViewHolder(view);
        case WARNING:
            view = this.inflater.inflate(R.layout.warning_view, parent, false);
            return new WarningViewHolder(view);
        default:
            return null;
    }
}

适配器的 GIST class:https://gist.github.com/feresr/2183e922b07c450304c5

我的应用程序因完全不同的原因而崩溃,我不会让您厌烦细节,基本上是我的错,因为我在不该使用的地方使用了常量。碰巧这个常量就在这个 switch 语句附近。尽管如此,调试问题似乎是 Android studio 1.4.1 的问题,我将计算机关闭再打开(IT 人群风格)并且问题仍然存在。我不熟悉为 android studio 创建错误的过程,也不确定如何始终如一地重现此错误,所以我什至不确定这是一个有效的错误。无论如何,我要感谢你们抽出宝贵时间,很抱歉打扰你们。再次感谢你的帮助!对于那些想知道出了什么问题的人:

if (day == ((Daily) weatherInfo.get(2)).getDays().get(0)) {

当显示警告时,2 是常量,应该是 3。