我正在尝试设置图片的来源,但是我收到了错误消息。
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 :(得分:2)
我已尝试设置
int drawable1 = "R.drawable."+test1;
,但仍然无效。
您需要使用getIdentifier()
从字符串中正确构建资源ID:
int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName());
(现在还有另外两个答案表明同样的事情......我是否错过了某些内容,或者他们只是想重复已经陈述过的内容?)
请注意,如果您的图片很大或在加载setImageResources()
上的文档时导致明显的延迟,则会有其他建议:
这会在UI线程上进行Bitmap读取和解码,这会导致延迟打嗝。如果这是一个问题,请考虑使用
setImageDrawable(android.graphics.drawable.Drawable)
或setImageBitmap(android.graphics.Bitmap)
和BitmapFactory
代替。
答案 1 :(得分:0)
假设您有context
(如果代码在活动中,请使用this
int resId = context.getResources().getIdentifier(test1 , "drawable", cw.getPackageName());
myImage.setImageResource(resId);
答案 2 :(得分:0)
使用
int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName();
要了解有关如何按名称获取资源的详情,请参阅此link