Android - getIdentifier always returns 0 (library

2020-06-01 03:29发布

I have Android project (com.appocaliptic.quizknife.app) which uses Android library (com.appocaliptic.quizknife.core).

What I am trying to do, is to get resource id of the picture which is the library. Path to the image is: res/drawable-xhdpi/fr_200_133.png

However, all tries with getIdentifier result 0. Where is the problem?

resId = getResources().getIdentifier("fr_200_133", "drawable", "com.appocaliptic.quizknife.core");
resId = getResources().getIdentifier("com.appocaliptic.quizknife.core:drawable/"+"fr_200_133", null, null);
resId = getResources().getIdentifier("drawable/fr_200_133", null, "com.appocaliptic.quizknife.core");

Edited:

Ach, and in R.java there is drawable and corensponding attribute.

5条回答
SAY GOODBYE
2楼-- · 2020-06-01 03:58

You should not be using the library package name. Try this instead:

resId = getResources().getIdentifier("fr_200_133", "drawable", getPackageName());

(or getContext().getPackageName() if this is executing in a view).

The key is that you need to use the app's package name (as listed in the manifest) rather than the library's package name (which actually disappears when creating the app).

查看更多
疯言疯语
3楼-- · 2020-06-01 04:00

I had a similar issue. I could resolve it similar to what Hussam Otri mentions. For example:

//This doesn't work
context.getResources().getIdentifier("audio_1.mp3", "raw", this.getPackageName()); 

//This works (strip off the file extension)
context.getResources().getIdentifier("audio_1", "raw", this.getPackageName());
查看更多
Juvenile、少年°
4楼-- · 2020-06-01 04:08

I was getting the same error and the only thing that worked was going about it in a different way:

resourceId = R.drawable.class.getField("fr_200_133").getInt(null);
查看更多
姐就是有狂的资本
5楼-- · 2020-06-01 04:09

The name of image is underscore (underline) or "_" and I result okay because compiler rename name of photo as sample: source:"img0001" after compile "imag_0001".

查看更多
贼婆χ
6楼-- · 2020-06-01 04:14

I faced the same problem: "getIdentifier result 0" and i solved it by removing image extension (*.jpg, *.jpeg,... etc) to be match the name as it in R.java file

查看更多
登录 后发表回答