首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从打包在JAR中的资源中膨胀Android布局

从打包在JAR中的资源中膨胀Android布局
EN

Stack Overflow用户
提问于 2014-06-30 11:34:20
回答 2查看 1.2K关注 0票数 0

我正在为一个Android项目构建一个库,它包含一个View子类,它正在膨胀来自XML的布局。我将其导出到JAR中(右键单击项目->导出->滴答类和资源),并验证了类、XML资源和依赖JAR库都在JAR中。

我的视图的构造函数是:

代码语言:javascript
复制
MyView(Context aContext, AttributeSet aAttrs)

视图是通过XML添加的。库是从其中包含的项目的上下文,因此aContext.getPackageName()返回最终项目的包。

为了找到我的视图中的XML来膨胀它,我执行以下操作:

代码语言:javascript
复制
int layout_id = context.getResources().getIdentifier("name_of_layout", "layout", context.getPackageName());
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rootLayout = (RelativeLayout) inflater.inflate(layout_id, this, true);

这不起作用,因为context.getPackageName()返回最终项目的包名,资源在JAR中。我尝试将其更改为库项目的包名。那不起作用。奇怪的是,类MyView在JAR中,我在最后一个项目中使用JAR包名来使用这个类。

为了使事情变得更复杂,我有两个项目:一个包含导出JAR的Android库项目和一个使用JAR中的内容的项目。JAR库、包含JAR的库项目和使用JAR中内容的最终项目都有不同的包名。

如何找到布局的正确资源ID?

我应该使用哪个Context,以及哪个包名?我能否在JAR中设置这个包名,而不管它是从哪个库或项目引用的。

EN

Stack Overflow用户

回答已采纳

发布于 2014-06-30 11:39:04

我将其导出到JAR中(右键单击项目->导出->滴答类和资源),并验证了类、XML资源和依赖JAR库都在JAR中。

XML资源文件在那里将是无用的。Android不使用Java资源。

我甚至不确定依赖的JAR是否能工作,尽管我不排除这种可能性。

您需要将其视为其他项目所依赖的普通Android库项目,或者迁移到Gradle/Android,并将其打包为AAR (其中确实包含Android资源)。

或者,摆脱资源(例如,将布局代码转换为相应的Java代码)。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24489208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档