【问题】
想要在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
就可以了。