android switch语句报错:case expressions must be constant expressions

今天无意中碰见了   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

android switch语句报错:case expressions must be constant expressions

android switch语句报错:case expressions must be constant expressions

原因分析:adnroid项目之间引用 刚被引用项目设置成is library后R文件中的变量fianl全部丢失具体什么原因不清楚,项目设置成is library后switch() 判断控件提示:

case expressions must be constant expressions

得知 case 必须要常量,不能是变量。把项目中的switch改为if else正常,如果不解决这个问题主项目转子项目的时候控件返回是NULL

上一篇:laravel源码解析


下一篇:AngularJS之Provider, Value, Constant, Service, Factory, Decorator的区别与详解