使用库项目时,0返回获取资源的ID

时间:2012-07-24 11:17:01

标签: java android eclipse

在使用库项目时,我遇到了按名称获取资源ID的问题:

int resId = context.getResources().getIdentifier("myresname", "drawable", "net.iberdroid.mygamecore");

当将项目用作库时,似乎总是返回0,但它是一个完美的工作,而它是一个独立的项目。

net.iberdroid.mygamecore是这些资源所在的位置,事实上它们就在那里。

该代码甚至在库项目包中执行,而不是从链接它的android项目中执行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,但它有点奇怪,因为我使用的库没有在同一个游戏的不同版本(简单免费和支付版本)上进行重复更改,也有点烦人。

在此上下文中,net.iberdroid.mygamecore是付款和免费版本共享的图书馆计划,net.iberdroid.gamefree和net.iberdroid.gamepro是免费和付费版本的Android项目。

如果我通过“net.iberdroid.gamefree”更改上一代码的包名称,它可以正常工作。但问题是该代码在库中,并且也将被“net.iberdroid.gamepro”使用,因此放置免费版本的软件包名称将打破付费,反之亦然。

因此,如果我仍想在库中共享该代码,我将需要以动态方式获取项目的包名称。所以这将解决问题:

public static int getDrawableId(String dname) {
    String pn = context.getPackageName();
    int resId = context.getResources().getIdentifier(dname, "drawable", pn);
    return resId;
}