我們有一個多項目應用程序,我們正在轉向gradle。在Java編譯錯誤,構建結果一樣:什麼原因導致switch語句中生成的R.id.xxx值出現「需要常量表達式」錯誤?
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構建文件。
SOLUTION(2014年1月9日)
我們對應用的build.gradle是採用了Android庫插件,而不是Android插件的。它是這樣的:
應用插件:「Android的圖書館
將其更改爲這樣:
應用插件: '機器人'
解決了這一問題。
而導致此錯誤的代碼是....? –
它是一個庫項目還是一個常規的Android項目? – PopoFibo