關於android開發新增選單XML檔案之後無法在R.java中生成ID的問題
因為和同學分開做的android軟體,現在想整合他做的介面部分,於是拷貝了res和src資料夾的檔案,其中包括一個res.menu資料夾中的XML。但是每次將該檔案匯入到工程總無法自動在R.java中生成相應的ID。
上網找了兩種方法:
第一種:使用專案(project)->clean……清除之後重新build專案。當我clean之後發現R.java檔案被刪除了,然後無論我怎麼重新執行也不能再自動生成出來。於是乎……悲劇了,重新建了新工程並使用其他方法了!
第二種:右擊選單中的該工程選擇Android Tools->Fix Project Properties。經過多次嘗試,發現這個選項並沒有做出任何修改……(也可能是我發覺不出吧),即使我結合上面的第一種方法clean之後也沒有任何反應!
那麼,問題到底出在哪裡呢??在我的專案選單中顯示的是整個專案沒有錯誤(當然,除去那些因為選單ID沒有著落而出現的錯誤),完全不知道該怎麼辦了……嘗試新建工程並在res資料夾下建立menu資料夾,然後再在裡面新建XML檔案,接著是複製程式碼到該資料夾裡。依舊沒有報錯,但是依然無法自動生成在R.java資料夾中!
經過了各種網上查資料和自己的各種嘗試,花了我兩個晚上,期間甚至包括自己手寫R.java檔案(當然,這種方法是不可取的,假如程式能執行成功的話,自己編寫的那一堆程式碼全部會被刪除,R.java依舊是按照系統自動生成的編寫方法去編寫相關的ID)依舊無果。
今晚找了鄒同學過來,估計是有過經驗,當看到我實際操作之後就發現了可能出現的錯誤!
問題這這裡:
- <?xmlversion="1.0"encoding="utf-8"?>
- <menuxmlns:android="http://schemas.android.com/apk/res/android">
- <itemandroid:id="@+id/scan"
- android:icon="@android:drawable/ic_menu_search"
- android:title="connect"/>
- <itemandroid:id="@+id/discoverable"
-
android:icon
- android:title="discoverable"/>
- </menu>
title部分原來的程式碼寫的是"@string/..."因為我沒有在string檔案中新增相關的字串標示符對應值,所以這個選單XML是一個錯誤檔案,導致R.java不會自動產生帶有錯誤的XML檔案的ID。這種情況很特殊,這樣的情況在eclipse的android開發環境下完全不會報出任何錯誤(專案選單欄中不會顯示任何檔案錯誤!),這才讓我花了兩個晚上也沒弄明白到底是哪裡出錯了。
後來我發現其實細心點也是能發現這個錯誤所在的,或許是因為我缺乏經驗吧。以前一直無視console檢視下的執行資訊……
- [2012-03-08 22:33:22 - TTTTT] H:\Users\wenyu\workspace\TTTTT\res\menu\option_menu.xml:3: error: Error: No resource found that matches the given name (at 'title' with value '@string/connect').
- [2012-03-08 22:33:22 - TTTTT] H:\Users\wenyu\workspace\TTTTT\res\menu\option_menu.xml:6: error: Error: No resource found that matches the given name (at 'title' with value '@string/discoverable').
其實它早就告訴我哪裡出錯了,但是我卻完全不知道!!這提醒我,以後要注意看看console下的資訊了。
補充:
剛才還發現,除了XML檔案錯誤java不會有預編譯錯誤提醒,不能自動生成R.java檔案,還會有一種情況:資原始檔是不能出現大寫字母命名的!如果資原始檔用大寫字母命名,比如圖片名,那麼圖片是可以匯入到res資料夾裡面對應的子資料夾裡面,但是同樣的,R.java也是不會自動生成的,而且eclipse也不會報錯!