当我尝试这样做时遇到了问题:
LinearLayout container = (LinearLayout)findViewById(R.id.chat_list_container);
android.content.res.Resources $ NotFoundException:资源ID#0x7f030001
这是我刚创建并添加到我的应用程序的外部jar的代码。
顺便说一下,当我将它用作导入模块时,这个确切的代码工作,而不是像外部jar一样使用它。
任何帮助?
谢谢!
答案 0 :(得分:0)
Android不会在任何外部jar中查找资源,因为它们只包含可执行代码。
如果你想将资源作为库发布,事情会变得更加丑陋。在这种情况下,您可以像framework-res.apk一样创建资源apk。为此,创建一个没有源的android项目,放置res文件并将其添加到AndroidManifest.xml:
...
<application
...
android:hasCode=false >
...
</application>
在这种情况下,您必须直接从res-apk中检索res 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。