【问题】
想要在android中的switch…case语句中,使用枚举类型变量。
【解决过程】
1.参考:
Java 1.5新特性Enum的学习和使用 – 学习Android – 51CTO技术博客
后来写为:
public enum VariableState {
Insecure,
Latest,
Edited,
Error
}和:
private void updateVarStatusUI(TextView statusView, VariableState curStatus){
Resources resources = getBaseContext().getResources();
switch(curStatus){
case Insecure:
statusView.setBackgroundResource(R.drawable.status_question);
break;
case Latest:
// Drawable statusLatestDrawable = resources.getDrawable(R.drawable.status_right);
// statusView.setBackgroundDrawable(statusLatestDrawable);
statusView.setBackgroundResource(R.drawable.status_right);
break;
case Error:
// Drawable statusErrorDrawable = resources.getDrawable(R.drawable.status_false);
// statusView.setBackgroundDrawable(statusErrorDrawable);
statusView.setBackgroundResource(R.drawable.status_false);
break;
default:
statusView.setBackgroundResource(R.drawable.status_question);
break;
}
}
即可。
2.后来发现,之前就遇到过这个问题了:
【已解决】android中switch中的case中不用使用enum枚举值:Type mismatch: cannot convert from xxx to int
【总结】
现在总结如下:
枚举变量定义是:
public enum EnumType {
ENUM_VAR1,
ENUM_VAR2,
ENUM_VAR3
}然后switch….case语句这样写:
EnumType curEnumValue = xxx;
switch(curEnumValue){
case ENUM_VAR1:
//do sth. 1
break;
case ENUM_VAR2:
//do sth. 2
break;
case ENUM_VAR3:
//do sth. 3
break;
default:
//do sth. else
break;
}即可。
注意:
1.ENUM_VAR1,不需要,也没法写成:
EnumType.ENUM_VAR1
直接写成:
ENUM_VAR1
就可以了。