android switch语句case expressions must be constant expressions

时间:2023-03-08 21:40:02

在项目中遇到这样的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.****.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都不可用。