今天无意中碰见了 case expressions must be constant expressions 的问题
写了一个
switch(item.getItemId())
{
case R.id.action_settings:
Toast.makeText(this ,"action_settings" ,Toast.LENGTH_LONG).show();
System.out.println("onOptionsItemSelected");
break; case R.id.shezhi:
Toast.makeText(this ,"shezhi" ,Toast.LENGTH_LONG).show();
System.out.println("onOptionsItemSelected");
break; case R.id.设置:
Toast.makeText(this ,"设置" ,Toast.LENGTH_LONG).show();
System.out.println("onOptionsItemSelected");
break; default:
break;
}
导入到其它的工程里面 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