【问题】

折腾:

期间,定义了个枚举。

然后打算在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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐