android switch语句报错:case expressions must be constant expressions
今天无意中碰见了 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
悠游天地间 all rights reserved. © 2013 -- 1 << 64