關於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)依舊無果。

今晚找了鄒同學過來,估計是有過經驗,當看到我實際操作之後就發現了可能出現的錯誤!

問題這這裏:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/scan"  
  4.           android:icon="@android:drawable/ic_menu_search"  
  5.           android:title="connect" />  
  6.     <item android:id="@+id/discoverable"  
  7.           android:icon="@android:drawable/ic_menu_mylocation"  
  8.           android:title="discoverable" />  
  9. </menu>  

title部分原來的代碼寫的是"@string/..."因爲我沒有在string文件中添加相關的字符串標示符對應值,所以這個菜單XML是一個錯誤文件,導致R.java不會自動產生帶有錯誤的XML文件的ID。這種情況很特殊,這樣的情況在eclipse的android開發環境下完全不會報出任何錯誤(項目菜單欄中不會顯示任何文件錯誤!),這才讓我花了兩個晚上也沒弄明白到底是哪裏出錯了。

後來我發現其實細心點也是能發現這個錯誤所在的,或許是因爲我缺乏經驗吧。以前一直無視console視圖下的運行信息……

[plain] view plaincopy
  1. [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').  
  2. [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也不會報錯!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章