2013-03-27 118 views
1

我一直在研究一個應用程序,並且最近有一臺新電腦。我不得不將現有的代碼導入到這臺計算機中。現在,當我這樣做時,我在構建路徑中出現了一些錯誤,所以我修復了它們。但是現在,在我的開關和情況下,我都會遇到錯誤。它說:case表達式必須是常量表達式。Android:Error - Case表達式必須是常量表達式

我的代碼示例:

case R.id.b3: 
    a.putExtra("Green", "green"); 
    startActivity(a); 
    break; 
case R.id.b4: 
    a.putExtra("Pink", "pink"); 
    startActivity(a); 
    break; 

我上按鈕的ID錯誤。在我使用的其他電腦上一切正常,所以我不知道爲什麼我現在得到這個錯誤。我做了谷歌它,我讀我應該用一個if else語句替換它們,但這將是一個重大的痛苦,以取代我所有的開關和案件,所以我想避免這種情況。

爲什麼在我導入的代碼中發生這種情況?

+0

您是否清理過該項目。 – 2013-03-27 19:30:27

+0

是的,我有..... – user2182912 2013-03-27 19:33:18

回答

12

當資源在庫項目中定義時會發生這種情況。我相信Android插件的一個較新版本需要基於對庫項目編譯方式的更改。 if-else是必要的。 IDE將自動完成。如果突出顯示switch關鍵字並按下ctrl-1,則應該可以選擇自動進行更改。您可以閱讀關於它here

+0

沒關係。我讀F1而不是1.謝謝!它工作完美。 – user2182912 2013-03-27 19:47:45

+0

你救了我的一天! – 2014-10-17 10:20:23

0

檢查你正在使用的活動,就是那個讓你的錯誤, 查查這行代碼在它

import android.R; 

刪除它! 執行清潔 ,一切都應該工作

0

這可能是你使用的是THIRD_PARTY庫,以使您開發的應用程序的快速,並能使用一個以上的圖書館,資源ID沒有定義爲final,所以你必須使用if/else而不是switch/case。

+0

這是從六個月前的接受答案上面添加什麼值? – pamphlet 2013-09-25 15:41:12