android switch语句case expressions must be constant expressions

在项目中遇到这样的Exception:case expressions must be constant expressions

public class StandingCityActivity extends Activity implements View.OnClickListener{}

  @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.back:
            
            break;

        default:
            break;
        }
    }

 从语法、逻辑上面看,都没有问题,但是eclipse报错~~~

在网上百度找解决办法,广大的程序员同志们提供了解决办法

http://blog.csdn.net/aaawqqq/article/details/20037407

主要原因是因为,当前项目是一个被其他项目引用了Library导致的。

感觉有点莫名其妙,估计和eclipse的支持有关系?或者其他什么的吧,没有深究。

一种解决办法是,在eclipse中的项目配置里面,将is Library的选项去掉

另一种解决办法是,逐个的给每个控件设置listener:

        back.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                
            }
        });

补充:

在当前项目被设置为Library的时候,所有的switch都不可用。

原文地址:https://www.cnblogs.com/zhou-guobao/p/5029771.html