2014-03-12 55 views
0

我有一個問題,當我試圖做到這一點:創建Android的外部JAR圖書館,沒有發現資源

LinearLayout container = (LinearLayout)findViewById(R.id.chat_list_container); 

android.content.res.Resources $ NotFoundException:資源ID#0x7f030001

這是我剛剛創建並添加到我的應用程序的外部代碼。

順便說一句,這個確切的代碼工作時,我用它作爲導入模塊,而不是像外部的jar使用它。

任何幫助?

謝謝!

+1

你是包裝資源還在罐子裏?你應該製作一個圖書館項目,並在另一個參考相同的情況下,如果是這樣的話 – Raghunandan

+0

是的我認爲我增加了資源,我怎麼能確定它?在jar中,我可以看到R文件中包含一些關於外部資源ID的內容。我把它作爲庫和參考.. –

+0

你不能將資源打包成jar。 – Raghunandan

回答

0

Android不會在任何外部jar中查找資源,因爲它們只包含可執行代碼。

如果您想要將資源發佈爲庫,事情會變得更加難看。在這種情況下,您可以像創建framework-res.apk一樣創建資源apk。要做到這一點,創建一個沒有源的Android項目,將資源文件,並添加到您的AndroidManifest.xml:

... 
<application 
    ... 
    android:hasCode=false > 
    ... 
</application> 

在這種情況下,你將不得不直接從RES-APK檢索資源ID :

int resId = getPackageManager().getResourcesForApplication("res.apk.package.name") 
.getIdentifier("chat_list_container" , "layout", "res.apk.package.name"); 

// Maybe getResources.getIdentifier() works, but I'm not sure. 
LinearLayout container = (LinearLayout)findViewById(resId); 

我應該指出,這將運行應用程序的設備也必須安裝了資源的apk。

+0

那麼,你的意思是我不能顯示對話框,例如,一些佈局很容易?這是奇怪的。 –

+0

是的,這就是我的意思。實現android庫項目 - 在項目屬性中設置爲庫的項目 - 實際上已完全添加到使用它們的主項目中(源和資源)。這是使用外部jar文件和將項目設置爲庫的區別。 –