枚举 switch android,【已解决】android中switch中的case中不用使用enum枚举值:Type mismatch: cannot convert from xxx to in...

本文详细描述了在Android应用中定义枚举USB_action并在Handler的switch语句中遇到的类型转换错误,通过实例展示了如何正确使用enum常量。关键步骤包括:避免使用类名加枚举名的形式,改为直接引用枚举常量。
摘要由CSDN通过智能技术生成

【问题】

折腾:

期间,定义了个枚举。

然后打算在switch的case中使用,结果出错:Type mismatch: cannot convert from DeviceListActivity.usb_action to int

如图:

41372a17f38c121b1cb0c71259ec1172.png

【解决过程】

1.参考:

去试试,public enum usb_action{

USB_ACTION_UNKNOWN,

USB_ACTION_ATTACH,

USB_ACTION_DETACH,

};

public Handler mHandler=new Handler()

{

public void handleMessage(Message msg)

{

usb_action curUsbAction = usb_action.values()[msg.what]; //do your own bounds checking

switch(curUsbAction)

{

case usb_action.USB_ACTION_UNKNOWN:

//do sth.

break;

default:

break;

}

super.handleMessage(msg);

}

};

结果还是出错:The qualified case label DeviceListActivity.usb_action.USB_ACTION_UNKNOWN must be replaced with the unqualified enum constant USB_ACTION_UNKNOWN

如图:

9ee633b5328c5b4348ae771e1f93c035.png

2.所以再去改为:public enum usb_action{

USB_ACTION_UNKNOWN,

USB_ACTION_ATTACH,

USB_ACTION_DETACH,

};

public Handler mHandler=new Handler()

{

public void handleMessage(Message msg)

{

usb_action curUsbAction = usb_action.values()[msg.what]; //do your own bounds checking

switch(curUsbAction)

{

case USB_ACTION_UNKNOWN:

//do sth.

break;

default:

break;

}

super.handleMessage(msg);

}

};

就可以了。

【总结】

如上图,使用类似于这样的写法:public enum usb_action{

USB_ACTION_UNKNOWN,

USB_ACTION_ATTACH,

USB_ACTION_DETACH,

};

public Handler mHandler=new Handler()

{

public void handleMessage(Message msg)

{

usb_action curUsbAction = usb_action.values()[msg.what]; //do your own bounds checking

switch(curUsbAction)

{

case USB_ACTION_UNKNOWN:

//do sth.

break;

default:

break;

}

super.handleMessage(msg);

}

};

就可以了。

注:

暂时不知道:

case xxx;

中的xxx,为何写成:

usb_action.USB_ACTION_UNKNOWN

会出错,而必须写成:

USB_ACTION_UNKNOWN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值