2013-01-11 154 views
0

我想设置图像的来源,但出现错误。Android ImageView设置图像源

String test1 = pref.getString("test", "ERROR"); 
String drawable1 = "R.drawable."+test1; 
myImage.setImageResource(drawable1); 

我试过设置int drawable1 = "R.drawable."+test1;,但它仍然无法正常工作。我知道这是一种类型不匹配,但我似乎无法找到一种方法来完成它。

看来你可以更进一步地解决问题,并说你如何做到这一点?

String drawable1 = "R.drawable.myImage"; 
myImage.setImageResource(drawable1); 

任何想法?

+0

再投下一票。没有意见。似乎是合法的。 – EGHDK

+0

可能因为这个问题之前已经被问过了,因此没有显示研究工作。 (虽然我不是downvoter,只是在这里猜测) –

回答

2

我试过设置int drawable1 = "R.drawable."+test1;,但它仍然不起作用。

您需要使用getIdentifier()正确地从字符串建立资源ID:

int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName()); 

(现在有两个其他的回答暗示同样的事情......我错过了什么还是他们只是觉得喜欢重复什么已经说?)


作为一个说明,如果你的图片是大是导致同时装上setImageResources()本文档的noticable延迟具有替代sugg提示:

这会在UI线程上进行位图读取和解码,这会导致延迟打嗝。如果这是一个问题,请考虑使用setImageDrawable(android.graphics.drawable.Drawable)setImageBitmap(android.graphics.Bitmap)BitmapFactory

0

假设你有一个context(使用this如果代码是一个活动范围内)

int resId = context.getResources().getIdentifier(test1 , "drawable", cw.getPackageName()); 
myImage.setImageResource(resId); 
0

使用

int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName(); 

通过名称了解如何获得资源看到这个link