您缺少的部分是从整数转换为类型安全的枚举。Java不会自动执行此操作。有两种方法可以解决此问题:
- 使用静态最终整数列表而不是类型安全的枚举,然后打开接收到的整数值(这是Java 5之前的方法)
- 开启指定的id值(如heneryville所述)或枚举值的序数值;即
guideView.GUIDE_VIEW_SEVEN_DAY.ordinal()
- 确定由int值表示的枚举值,然后打开该枚举值。
enum GuideView { SEVEN_DAY, NOW_SHOWING, ALL_TIMESLOTS } // Working on the assumption that your int value is // the ordinal value of the items in your enum public void onClick(DialogInterface dialog, int which) { // do your own bounds checking GuideView whichView = GuideView.values()[which]; switch (whichView) { case SEVEN_DAY: ... break; case NOW_SHOWING: ... break; } }您可能会发现编写自定义
valueOf实现(以整数值作为参数来解析适当的枚举值并允许您集中边界检查)的自定义实现更有用/更少出错。



