我有Android项目(com.appocaliptic.quizknife.app),它使用Android库(com.appocaliptic.quizknife.core)。
我想要做的是获取图片库的资源ID。图像的路径是: res / drawable-xhdpi / fr_200_133.png
但是,所有尝试使用getIdentifier结果为0.问题出在哪里?
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");
编辑:
Ach,在R.java中有drawable和corensponding属性。
答案 0 :(得分:32)
我遇到了同样的问题:“getIdentifier result 0”我通过删除图片扩展名(* .jpg,* .jpeg,...等)来解决它以匹配名称在 R.java 文件
中答案 1 :(得分:29)
您不应该使用库包名称。试试这个:
resId = getResources().getIdentifier("fr_200_133", "drawable", getPackageName());
(或getContext().getPackageName()
如果在视图中执行此操作。)
关键是您需要使用应用程序的软件包名称(如清单中所列)而不是库的软件包名称(在创建应用程序时实际上会消失)。
答案 2 :(得分:11)
我得到了同样的错误,唯一有用的是以不同的方式解决它:
resourceId = R.drawable.class.getField("fr_200_133").getInt(null);
答案 3 :(得分:4)
我有类似的问题。我可以像Hussam Otri提到的那样解决它。例如:
//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());
答案 4 :(得分:0)
图片的名称是下划线(下划线)或“ _”,我可以 因为编译器在编译“ imag_0001”后将照片的名称重命名为示例:来源:“ img0001”。