【发布时间】:2011-12-27 21:10:06
【问题描述】:
我查看了与此问题类似的 SO 上的各种问答,但没有找到解决方案。
我所拥有的是一个枚举,它代表查看电视指南的不同方式...
在 NDroid Application 类中
static enum guideView {
GUIDE_VIEW_SEVEN_DAY,
GUIDE_VIEW_NOW_SHOWING,
GUIDE_VIEW_ALL_TIMESLOTS
}
...当用户更改视图时,事件处理程序会收到来自 0-2 的 int,我想做这样的事情...
在 Android Activity onClick(DialogInterface dialog, int which) 事件处理程序中
// 'which' is an int from 0-2
switch (which) {
case NDroid.guideView.GUIDE_VIEW_SEVEN_DAY:
...
break;
}
我已经习惯了 C# 枚举和 select/case 语句,它们允许像上面这样的事情,我知道 Java 做的事情不同,但我就是无法理解我需要做什么。
我将不得不诉诸if 声明吗?可能只有 3 个选择,所以我可以做到,但我想知道如何使用 Java 中的 switch-case 来完成。
编辑 抱歉,我没有完全扩展该问题,因为我将其视为一般 Java 问题。我已经添加到问题中以进一步解释。
没有任何特定于 Android 的东西,这就是为什么我没有将其标记为 Android,但枚举是在 Application 类中定义的,而我不想切换的代码在 Activity 中。枚举是静态的,因为我需要从多个活动中访问它。
【问题讨论】:
-
正确导入后应该是
case GUIDE_VIEW_SEVEN_DAY;你有什么问题? -
你不能让你的事件处理程序接收一个枚举吗?除此之外,也许这会有所帮助:stackoverflow.com/questions/5292790/…
-
@Dave:糟糕,抱歉,我已经更正了代码以显示它是怎样的。 Eclipse 给我一个类型不匹配的错误,说它不能从 guideView 转换为 int。
-
@Brian:这是一个 Android 应用程序,事件处理程序 (
OnClickListener) 由我必须实现的DialogInterface接口定义。 -
@MisterSquonk 哦,我想念你是从一个 int 中得到它的——对不起,请参阅 Ophidian 的回答,尽管我会将功能放在枚举中。
标签: java enums switch-statement