2012-05-03 95 views
13

我有一個Android項目,我試圖將其製作成庫。我拋出這個代碼的異常:Android庫不會將其資源拉到其他項目

_buttonStart = (Button) findViewById(R.id.buttonStart); 

我得到的例外是:

java.lang.NoSuchFieldError: com.xxx.libraryname.R$id.buttonStart 

Android的文檔似乎明確地說,圖書館應該能夠訪問這些資源:

「例如,庫項目中的源代碼可以通過其R類訪問自己的資源。」

當我看圖書館的/gen/com.xxx.libraryname/R.java/R/id/時,buttonStart就在那裏。但是當我看到主項目的/gen/com.xxx.libraryname/R.java/R/id時,事實並非如此。

我已經做了一個清潔。

+9

想通了。這兩個項目都有一個「main.xml」文件。將該庫的main.xml文件重命名並運行。 –

+5

是的,如果您的資源命名相同,則主項目將獲勝。最好給圖書館提供獨特的資源名稱,可能通過一些前綴符號,所以不會有意外的衝突。可能還有*故意*衝突,主機專門試圖替換資源,在這種情況下主機必須以圖書館將接受的方式這樣做(例如,維護具有相同ID的佈局的相同小部件)。 – CommonsWare

+1

@DanJameson您還可以在答案部分添加解決方案嗎? – Anirudh

回答

4

您的圖書館項目也與您的主項目具有相同的名稱佈局main.xml。

Android將優先舉辦項目如果兩者都具有相同的佈局名稱,在這種情況下「main.xml中」最好的辦法是,所以沒有意外碰撞使用一些前綴符號。

+0

Greate Answer !!! –

相關問題