| Android Library工程寫代碼需要注意switch ... case語句對(duì)資源id的引用,會(huì)引發(fā)編譯錯(cuò)誤:`case expressions must be constant expressions。` |
|
|
| 通常android工程生成的資源R.java,資源id聲明如下: |
|
|
| public static final int main=0x7f030004; |
|
|
| 而對(duì)于library工程,資源id聲明如下: |
|
|
| public static int main=0x7f030004; |
|
|
| 缺少了final,因此使用R.id 的switch ... case語句會(huì)編譯失敗。 |
|
|
| ### 解決方法如下: |
|
|
| 將switch ... case替換成if ... else語句。 |
|
|
| #### for Eclipse |
|
|
| Eclipse中,光標(biāo)定位在switch上,按Ctrl + 1(Command + 1 for Mac osx),選擇Convert 'switch' to 'if-else'. |
|
|
| #### for Android studio |
|
|
| 快捷鍵,Alt + Enter,選擇 Replace 'switch' with 'if'. |
|
|
| 如轉(zhuǎn)換前代碼: |
|
|
| ~~~.java |
| @Override |
| public void onClick(View v) { |
| switch (v.getId()) { |
| case R.id.btn_left: |
| hideSoftKeyboard(); |
| finish(); |
| break; |
|
|
| default: |
| break; |
| } |
| } |
| ~~~ |
|
|
| 轉(zhuǎn)換后代碼: |
|
|
| ~~~.java |
| @Override |
| public void onClick(View v) { |
| int id = v.getId(); |
| if (id == R.id.btn_left) { |
| hideSoftKeyboard(); |
| finish(); |
| } else { |
| } |
| } |
| ~~~ |