今天無意中碰見了 case expressions must be constant expressions 的問題
寫了一個
1 switch(item.getItemId()) 2 { 3 case R.id.action_settings: 4 Toast.makeText(this ,"action_settings" ,Toast.LENGTH_LONG).show(); 5 System.out.println("onOptionsItemSelected"); 6 break; 7 8 case R.id.shezhi: 9 Toast.makeText(this ,"shezhi" ,Toast.LENGTH_LONG).show(); 10 System.out.println("onOptionsItemSelected"); 11 break; 12 13 case R.id.設置: 14 Toast.makeText(this ,"設置" ,Toast.LENGTH_LONG).show(); 15 System.out.println("onOptionsItemSelected"); 16 break; 17 18 default: 19 break; 20 }
導入到其它的工程里面 case R.id.action_settings: 出現了錯誤
錯誤提示為:case expressions must be constant expressions
網上查了一下 發現是 我的工程 勾選了isLibrary 的原因。
解決如下:project--->properties--->android--->library--->勾掉is library--->apply--->ok
原因分析:adnroid項目之間引用 剛被引用項目設置成is library后R文件中的變量fianl全部丟失具體什么原因不清楚,項目設置成is library后switch() 判斷控件提示:
case expressions must be constant expressions
得知 case 必須要常量,不能是變量。把項目中的switch改為if else正常,如果不解決這個問題主項目轉子項目的時候控件返回是NULL