Android Library工程写代码需要注意switch ... case语句对资源id的引用,会引发编译错误:`case expressions must be constant expressions。` | |
通常android工程生成的资源R.java,资源id声明如下: | |
public static final int main=0x7f030004; | |
而对于library工程,资源id声明如下: | |
public static int main=0x7f030004; | |
缺少了final,因此使用R.id 的switch ... case语句会编译失败。 | |
### 解决方法如下: | |
将switch ... case替换成if ... else语句。 | |
#### for Eclipse | |
Eclipse中,光标定位在switch上,按Ctrl + 1(Command + 1 for Mac osx),选择Convert 'switch' to 'if-else'. | |
#### for Android studio | |
快捷键,Alt + Enter,选择 Replace 'switch' with 'if'. | |
如转换前代码: | |
~~~.java | |
@Override | |
public void onClick(View v) { | |
switch (v.getId()) { | |
case R.id.btn_left: | |
hideSoftKeyboard(); | |
finish(); | |
break; | |
default: | |
break; | |
} | |
} | |
~~~ | |
转换后代码: | |
~~~.java | |
@Override | |
public void onClick(View v) { | |
int id = v.getId(); | |
if (id == R.id.btn_left) { | |
hideSoftKeyboard(); | |
finish(); | |
} else { | |
} | |
} | |
~~~ |
转自:http://www.yinqisen.cn/blog-468.html
转载于:https://blog.51cto.com/11932981/1846340