java – 使用Android getIdentifier()

我试过这个:

r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2");
Log.i("FindBall","R = "+r);

和这个:

r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null);

但是’r’总是为0。

我从一个帮助类中调用这个线不是一个活动,不扩展任何东西,所以我不能简单地调用getResources(),但我可以从我的SurfaceView传递它。

最后,我想用一个变量替换“ball_red”,但首先是第一个。这不工作。

com.Juggle2确实是我的包名。 drawable是它所在的res文件夹,并且文件的名称确实是ball_red。

R.java说:

        public static final int ball_red=0x7f020027;

所以我不知道为什么它不工作。

所以我不能使用资源,我必须传递一个上下文,我这样做:
在这里:

class Collection extends SurfaceView implements SurfaceHolder.Callback {

我正在做一个新的类的实例,并传递它的getContext()作为参数。

因为你在一个活动内,这足以写

int resId=YourActivity.this.getResources().getIdentifier("ball_red", "drawable", YourActivity.this.getPackageName());

或者如果你不是从内部类调用它

int resourceID = getResources().getIdentifier("ball_red", "drawable", getPackageName());

注意

getIdentifier() Returns 0 if no such resource was found. (0 is not a valid resource ID.)

检查

还要在你的R.java中检查是否有一个名为ball_red的drawable

例如。:

public static final class drawable {
        public static final int ball_red=0x7f020000;
 }

编辑
如果你不在任何活动,那么你必须把一个上下文,而不是资源作为参数,然后这样做

int resId=context.getResources().getIdentifier("ball_red", "drawable", context.getPackageName());
http://stackoverflow.com/questions/15488238/using-android-getidentifier

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 使用Android getIdentifier()