Using Android getIdentifier()

android, java

Solution

Since you are inside of an activity it is enough to write

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

or if you're not calling it from an inner class

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

Note

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

Check

Check also in your R.java whether there is a `drawable` with the name `ball_red`

e.g.:

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

EDIT If you're not in any activity then you must pass a `context instead of resources as parameter` then do this

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

Problem

I've tried this: ``` r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2"); Log.i("FindBall","R = "+r); ``` And this: ``` r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null); ``` But 'r' always ends up as zero. I'm calling this line from inside a helper class that's not an Activity and doesn't extend anything, so I can't simply call `getResources()`, but I can pass it from my `SurfaceView`. Eventually, I want to replace `"ball_red"` with a variable, but first thing's first. This isn't working. `com.Juggle2` is indeed my package name. `drawable` is the `res` folder that it's in, and, the name of the file is indeed `ball_red`. R.java says: ``` public static final int ball_red=0x7f020027; ``` So I'm not sure why it isn't working. So I can't use Resources, I must pass a context, and I'm doing that this way: Inside here: ``` class Collection extends SurfaceView implements SurfaceHolder.Callback { ``` I'm making a new instance of my class and passing it `getContext()` as a parameter.

Original source