最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Android中在switch…case语句中使用枚举类型变量

Android crifan 3586浏览 0评论

【问题】

想要在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

就可以了。

转载请注明:在路上 » 【已解决】Android中在switch…case语句中使用枚举类型变量

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.181 seconds, using 23.39MB memory