Android:使用String作为图像名称将图像显示到ImageView(在实际设备中)

时间:2017-03-11 04:33:45

标签: android

我无法使用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

2 个答案:

答案 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);