2012-01-19 36 views
4

在我的android應用程序中,我創建了2個項目。主項目和圖書館之一,因爲它將在未來的項目中使用。由於我想在代碼中引用一些視圖,我試圖創建一個資源類型文件來聲明一些獨特的ID,如http://developer.android.com/guide/topics/resources/more-resources.html#Id所述。無法在android庫項目中添加id資源類型文件

問題是,當我將此文件添加到res/values(稱爲ids.xml)時,R文件不再生成。當我刪除它時,一切正常。

我知道我可以在android項目中添加一個id資源類型文件。在圖書館項目中做同樣的事情是否有限制?

謝謝你,比爾

+0

複製ids.xml,切一切,除了一個ID,如果一點兒也不編譯這裏粘貼文件,所以我們可以看到它。 –

+0

<?xml version =「1.0」encoding =「utf-8」?> 該文件的名稱是ids.xml,位於res/values下。當我清理項目時,R永遠不會再生成。 – oceanfeeling

+0

問題是,當我在一個新的空android庫項目中嘗試相同的一切工作正常。 R按預期正常再生。 – oceanfeeling

回答

5

後的研究2天,我終於找到了解決辦法。

的信息[這裏] [1]

[1]:Android style Resources compile (aapt) failing : Bad resource table: header size 0xc幫助了我。

無論它是Android項目還是庫中的一個,但是當您在其中一種樣式中聲明瞭新的ID時,無論如何都不能添加ids.xml文件來聲明唯一的ID。

就我而言,我宣佈一個風格,我RES /價值/ styles.xml

<style name="ActionBar"> 
     <item name="android:id">**@+id/actionbar_container**</item> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">@dimen/actionbar_height</item> 
     <item name="android:orientation">horizontal</item> 
     <item name="android:background">@drawable/actionbar_gradient</item> 
    </style> 

,然後添加一個RES /價值/ ids.xml,我宣佈了一些唯一的ID。例如,

<resources> 
<item type="id" name="menu_refresh" /> 
</resources> 

添加此文件後,R停止生成。 Project Clean沒有做這項工作。

當我將styles.xml中的聲明更改爲@id/actionbar_container時,R開始再次生成。不同之處在於我在上面的樣式中使用@id而不是 @ + id引用了我的ids.xml文件中的id。

結論:如果要在資源文件(即ids.xml)中聲明唯一的id,請首先仔細檢查樣式中是否還沒有聲明任何新的id(使用@ + id語法)。

希望能幫助任何有同樣問題的人。

快樂編碼!

+0

您甚至不知道有多難以解決問題,以至於我能夠搜索此問題。 – James

0

以防萬一,因爲它發生在我身上......我花了幾分鐘試圖理解爲什麼我的「R.id.myid」無法在Java文件中找到創建它作爲一個資源ID項目後:

<resources> 
<item type="id" name="myid" /> 
</resources> 

=>問題是我的java文件導入「android.R」而不是我自己的「R」(生成的資源文件)。

import android.R; 

聽起來很愚蠢,但它可能發生。

import xxxx.xxxx.R; 
相關問題