是什么原因导致 switch 语句中生成的 R.id.xxx 值出现“需要常量表达式”错误?
我们有一个多项目应用程序,我们正在将其移至gradle。生成会导致 Java 编译错误,例如:
AFragment.java:159: constant expression required
case R.id.aBtn:
我们已确认错误中报告的常量位于生成的 .R.java
一个线索是,错误仅适用于开关值。例如,使用 没有错误。findViewById(R.id.aBtn)
另请注意,常量来自主项目,而不是库项目之一。
对于任何想要摆脱错误的人来说,laalto的建议将解决它。
他提供的链接,以及eclipse没有显示使用gradle构建时发生的错误的事实,给了我另一个线索。eclipse 生成的 R.java将主项目常量定义为“final”,但 gradle 生成的值不是“final”。真正的解决方案必须是纠正 gradle 构建文件。
解决方案 (2014-01-09)
我们的 build.gradle 应用程序应用了 android-library 插件,而不是 android 插件。是这样的:
应用插件:“安卓库”
将其更改为:
应用插件: '安卓'
修复了问题。