最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

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

Android crifan 4221浏览 0评论

【问题】

想要在android中的switch…case语句中,使用枚举类型变量。

【解决过程】

1.参考:

Java 1.5新特性Enum的学习和使用 – 学习Android – 51CTO技术博客

后来写为:

1
2
3
4
5
6
public enum VariableState {
    Insecure,
    Latest,
    Edited,
    Error
}

和:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    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

 

【总结】

现在总结如下:

枚举变量定义是:

1
2
3
4
5
public enum EnumType {
    ENUM_VAR1,
    ENUM_VAR2,
    ENUM_VAR3
}

然后switch….case语句这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.294 seconds, using 22.17MB memory