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

原文地址:https://www.cnblogs.com/jeff-wgc/p/5600912.html