在制作一個繼續按鈕時,将button的id設定為continue,發現報了錯誤,error: invalid symbol: 'continue'
一開始還以為是編碼問題,後來百度之後才知道安卓Android項目中資源檔案或者id都不能使用Java保留符号
原因是它們會被翻譯成Java代碼(R.java),使Dalvik VM可以解釋。
是以順便總結一下安卓工程中的命名禁忌,以免以後還犯這種錯誤
Android工程中,res\drawable\ 檔案夾下所有的圖檔資源檔案命名,不允許:
1. 大寫字母
從Eclipse的這個報錯可以知道資源檔案的命名規則。
參考Android Issue 31。
2. "default.png"
不能生成 R.java,報錯:
出現這個錯是因為類似
default
和
continue
等是Java的保留符号,而Android項目中資源檔案(譬如drawable中的圖檔和strings.xml等)不能使用Java保留符号的原因是它們會被翻譯成Java代碼(R.java),使Dalvik VM可以解釋。
例如strings.xml中的
可被翻譯成
Java的Keyword清單:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
3. 以下劃線("_")開頭
不能生成 R.java,報錯Type是 "Android AAPT Problem"。
2009年送出的Android Issue 5343指出“Files in the assets folder starting with an underscore are omitted by the build script”,“Folders starting with an underscore are omitted without warning.”。更多資訊都在5343這個issue detail裡。
看上去,
res/drawable
裡以下劃線開頭的檔案也被aapt報錯了。類似的還有人提到
res/raw
裡的python腳本檔案
__init__.py
。
4. 以數字加下劃線("[0-9]_")開頭
常見于圖檔資源。可以生成 R.java,但是 R.java 檔案内報錯:
這裡涉及到兩種情況。
- Java辨別符不能以數字開頭,第一個字元應該是字母。
- 下劃線。Java 7中引入了一個新特性“Underscores in Numeric Literals”。譬如1_000就是1000。
以數字開頭的報錯如下:
更多參考:Android 命名規範 (提高代碼可以讀性)
轉載于:https://www.cnblogs.com/six-moon/p/4654741.html