我把我的图片放在我的文件夹里,没问题。
问题是,我想做这样的事情:

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.*img[contar]*);

换句话说,eclipse不允许我这样做img[contar]它只接受图像文件的特定名称(例如:crystalblue),我想让say从“crystalblue”移动到“crystalred”图像,在我的情况下,我需要一个变量来完成它。
obs:我把img声明为字符串数组。
有什么解决办法吗?

最佳答案

不能将变量名的一半与运行时数据连接起来。编译器无法判断您实际要传递的变量。
你要做的就是这样:

int resourceId = 0;
if(someCondition){
  resourceId = R.drawable.someimage;
}else{
  //other logic for picking the right image here
}

mBitmap = BitmapFactory.decodeResource(getResources(), resourceId);

您还可以使用反射在r类中查找名称与字符串数组中的值匹配的字段,然后对该字段执行“get”调用以填充resourceid:
Class rClass = R.drawable.class;
Field resourceConstant =rClass.getField(img[contar]);
int resourceId = resourceConstant.getInt(null); //since it's a static field, pass null here
mBitmap = BitmapFactory.decodeResource(getResources(), resourceId);

10-06 07:42