Android的Switch语句case expressions must be constant expressions错误的解决方法
2017-01-17 23:01
591 查看
解决方案
今天调试一个开源代码的时候出现“case expressions must be constant expressions”的错误,所有错误都指向包含R.id的地方,形如:switch(view.getId()) { case R.id.button1: ...; break; case R.id.button2: ...; break; }
出现这种错误的原因是本工程被指定为Android library project,右键工程选择属性,出现如下图片。
如图中红色所示,取消勾选”Is Library”即可编译通过。
不过话说回来,为啥Android Library工程会出现这种错误,要是项目本来就要指定为”Is Library”该如何处理。
原因是对于普通的Android工程,生成的R文件的类声明如下所示:
public static final int main=0x7f030000;
但是对于library工程,其声明会是:
public static int main=0x7f030000;
由于缺少了final,不被认为是常量,从而导致switch…case编译出错。
解决方案是将switch语句转化为if-else语句
对于eclipse环境,光标定位在switch语句上,按ctrl+1键然后选择“Convert ‘switch’ to ‘if-else’”。
对于Android Studio环境,光标定位在switch语句上,按Alt+Enter键然后选择“Replace ‘switch’ with ‘if’”。
其实这篇文章更像是翻译,Stack Overflow上有完整的说明。
参考文献
http://stackoverflow.com/questions/9092712/switch-case-statement-error-case-expressions-must-be-constant-expression相关文章推荐
- Android的Switch语句case expressions must be constant expressions错误的解决方法
- android switch语句case expressions must be constant expressions
- android switch语句case expressions must be constant expressions
- android switch语句case expressions must be constant expressions
- Android switch 中 case expressions must be constant expressions 错误
- Android switch语句报case expressions must be constant expressions
- Android switch语句“case expressions must be constant expressions”
- android switch语句报错:case expressions must be constant expressions
- android开发 switch语句编译报错“case expressions must be constant expressions”
- 举例说明出现case expressions must be constant expressions错误的原因及其解决办法
- android 中 switch 时出现case expressions must be constant expressions
- android中 swich语句中的R文件出现case expressions must be constant expressions问题
- Android 库工程 提示case expressions must be constant expressions 错误
- Android 出现case expressions must be constant expressions
- android library工程中使用switch_case语句,调用资源文件的id出现错误的原因分析及解决方法
- Zxing库遇到case expressions must be constant expressions问题的解决办法
- switch中出错:case expressions must be constant expressions
- 解决case expressions must be constant expressions
- 如何解决 case expressions must be constant expressions
- Zxing库遇到case expressions must be constant expressions问题的解决办法