开关输入错误的情况?
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。
下图说明了一切。我正在调试我的 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。