在主项目中获取图书馆项目的资源

时间:2014-03-04 10:33:56

标签: android android-resources android-library

当我拥有项目main_app时,我能够使用 -

访问资源
int resId = getResources().getIdentifier("xml/" + rule_file, "string", "com.main_app.main");

现在,我的项目main_app是项目test_app的库项目。

但是当我运行test_app时,我总是在 -

处获得异常
int resId = getResources().getIdentifier("xml/" + rule_file, "string", "com.main_app.main"); //Line 5456

错误日志 -

03-04 15:53:50.158: E/AndroidRuntime(29898): Caused by:
android.content.res.Resources$NotFoundException: Resource ID #0x0
03-04 15:53:50.158: E/AndroidRuntime(29898):  at
android.content.res.Resources.getValue(Resources.java:1017) 03-04
15:53:50.158: E/AndroidRuntime(29898):    at
android.content.res.Resources.loadXmlResourceParser(Resources.java:2102)
03-04 15:53:50.158: E/AndroidRuntime(29898):  at
android.content.res.Resources.getXml(Resources.java:905) 03-04
15:53:50.158: E/AndroidRuntime(29898):    at
com.main_app.main.ClainFragment$23.run(ClainFragment.java:5456)

1 个答案:

答案 0 :(得分:0)

@blackbelt评论说,

包名称应该是项目test_app的包,它是我们在项目test_app的清单文件中定义的包,如 -

 package="com.test_app.main"

使用像< - p>这样的行进行硬编码

int resId = getResources().getIdentifier("xml/" + rule_file, "string", "com.main_app.main"); 

错了。

已更改为 -

int resId = getResources().getIdentifier("xml/" + rule_file, "string", getActivity().getPackageName());

有效!