0

我正在尝试设置图像的来源,但出现错误。

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

有任何想法吗?

4

3 回答 3

2

我试过设置int drawable1 = "R.drawable."+test1;,但还是不行。

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

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

(现在还有另外两个答案暗示了同样的事情......我错过了什么还是他们只是想重复已经说过的内容?)


请注意,如果您的图像很大或在加载文档时导致明显的延迟,则setImageResources()有其他建议:

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

于 2013-01-11T20:22:58.397 回答
0

假设您有一个contextthis如果代码在活动中,则使用)

int resId = context.getResources().getIdentifier(test1 , "drawable", cw.getPackageName());
myImage.setImageResource(resId);
于 2013-01-11T20:25:40.103 回答
0

利用

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

要了解更多如何按名称获取资源,请参阅此链接

于 2013-01-11T20:30:36.400 回答