天天看點

【android相關】【問題解決】R.java檔案丢失

在進行android開發過程中,有時候,我們會遇到gen檔案中R.java丢失的現象。重新build,或者clean工程,close并重新打開Project,但有時也沒解決。

  這可能是由于不小心把xml檔案寫錯了,或者在編輯xml或者其他檔案時候點選了run,或者clear過項目等...,反正,你會發現gen下面的R.java的檔案找不到了。

  其實,隻要xml檔案有問題,系統就不會給自動生成R.java檔案,因為系統需要參照每個xml裡的資料來生成R.java。

  當然,如果項目較大,而layou下xml檔案有較多的情況下一個一個看也比較麻煩,這時候,嘗試選擇重新整理項目,并eclipse-->Project-->clean,這個時候,Project中可能就會出現紅色的錯誤資訊,根據這個去逐個解決之後,一般就可以了。

  然後,對着工程點選滑鼠右鍵 選擇 Build Project,R.java 檔案又回來。這樣R.xx.xxx 就能 X 的出來了; 如果還沒出來,那麼可以嘗試從别的工程中拷貝一份R檔案過來 然後string.xml裡随便改動一下 即可更新R檔案; 不過要注意,多檢查工程,像檔案的命名之類,比如我就曾犯過錯誤,把layout下的檔案命名為haoBooks_Content.xml,結果一直不對,需要全部小寫就可以了。

  這裡記得這個原則:資源的命名規則是不允許有大寫字母出現的。另外也不允許下劃線_出現。

  那麼,我們來看看這個檔案到底是做什麼的。

  R.java這個檔案是會自動生成的,它記錄了一些系統的資源資訊,不需要我們自己手動去編輯。  

<a></a>

  R.java檔案中預設有attr、dimen、drawable、id、layout、menu、string、style等靜态内部類,每個靜态内部類分别對應着一種資源,如layout靜态内部類對應layout中的界面檔案,其中每個靜态内部類中的靜态常量分别定義一條資源辨別符,比如public static final int activity_hao_books=0x7f030000;對應的是layout目錄下的activity_hao_books.xml檔案。

 attr 是控件的屬性,一般在res/attr.xml中定義,控件可以使用這裡面的資源。目前未定義,是以為空;

  dimen 是螢幕屬性,記錄螢幕水準還是垂直對齊的一些屬性;   

    drawable其實對應了res下的圖檔檔案:ic_launcher.png,不同詳述的同名的ic_launcher.png檔案在drawable内部類總隻有一個icon屬性。如果我們在【drawable-*dpi】目錄下再添加一幅圖檔,則内部類中會自動的添加一個icon屬性。

    id 是需要找的控件的标示符号,我們常會寫findViewById(××××),也就是在找這個ID;

    layout 裡面一般是main.xml,是布局相關檔案;

    添加資源的命名規則:資源檔案隻能以小寫字母和下劃線做首字母,随後的名字中隻能出現 [a-z0-9_.] 這些字元,否則R.java檔案不會自動更新,并且eclipse會提示錯誤。

    了解了R.java檔案中内容的來源,即當開發者在res/目錄中任何一個子目錄中添加相應類型的檔案之後,ADT會在R.java檔案中相應的匿名内部類中國自動生成一條靜态int類型的常量,對添加的檔案進行索引。如果在layout目錄下再添加一個新的界面,那麼在public static final class layout中也會添加相應的靜态int常量。相反當我們在res目錄下删除任何一個檔案,其在R.java中對應的記錄會被ADT自動删除。

     R.java檔案按除了有自動标示資源的索引功能之外,還有另外一個主要的功能,如果res目錄中的某個資源在應用中沒有被使用到,在該應用被編譯的時候系統就不會把對應的資源編譯到該應用的APK包中,這樣可以節省Android手機的資源。

本文轉自 念槐聚 部落格園部落格,原文連結:http://www.cnblogs.com/haochuang/p/3416158.html,如需轉載請自行聯系原作者

繼續閱讀