我无法使用String将图像从@drawable
加载到ImageView作为图像的名称。
这是我的代码;
String uri = "@drawable/"+imgname; // image file
int resID = getResources().getIdentifier(uri , "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(resID); //<----line with error
ImageView imageview= (ImageView)findViewById(R.id.hardImg);
imageview.setImageDrawable(drawable);
错误日志:
android.content.res.Resources $ NotFoundException:资源ID#0x0
答案 0 :(得分:2)
您不需要"@drawable/"
。这就是getIdentifier
的第二个参数已经做到的。
getResources().getIdentifier(imgname, "drawable", getPackageName());
如果该资源不存在,将生成<your package name>.R.drawable.<imgname>
的整数资源ID,或0
。
如果未找到此类资源,则返回0。 (0不是有效的资源ID。)
因此,您的错误消息。
注意:Android资源只能包含某些字符。
答案 1 :(得分:0)
这应该有效 -
String uri = "@drawable/"+imgname; // image file with extension, make sure image name is correct.
int resID = getResources().getIdentifier(uri , null, getPackageName());
Drawable drawable = getResources().getDrawable(resID);
ImageView imageview= (ImageView)findViewById(R.id.hardImg);
imageview.setImageDrawable(drawable);