我有一個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
時,事實並非如此。
我已經做了一個清潔。
想通了。這兩個項目都有一個「main.xml」文件。將該庫的main.xml文件重命名並運行。 –
是的,如果您的資源命名相同,則主項目將獲勝。最好給圖書館提供獨特的資源名稱,可能通過一些前綴符號,所以不會有意外的衝突。可能還有*故意*衝突,主機專門試圖替換資源,在這種情況下主機必須以圖書館將接受的方式這樣做(例如,維護具有相同ID的佈局的相同小部件)。 – CommonsWare
@DanJameson您還可以在答案部分添加解決方案嗎? – Anirudh