您好我的编码问题,我该怎么做:
BitmapFactory.decodeResource(getResources(), R.drawable."some string");
我正在使用:
getResources().getIdentifier(img, "drawable", context.getPackageName())
,
然后它显示:
错误无法解析方法decodeResource(int)
答案 0 :(得分:2)
从技术上讲,你不能那样做,因为“R.drawable.XXXXX”是一个在编译时生成的int。我建议创建一个自定义枚举,它将int与字符串相关联,并提供一个返回给定另一个的方法。例如:
public enum DrawableEnum {
STRING_ONE("some string", R.drawable.some_string),
STRING_TWO("another string", R.drawable.some_other_string),
STRING_THREE("third string", R.drawable.string_three);
private final String string;
private final int resId;
DrawableEnum(String string, int resId) {
this.string = string;
this.resId = resId;
}
int getResId() {
return resId;
}
String getString() {
return string;
}
int getResIdFromString(String string) {
for(DrawableEnum item : DrawableEnum.values()) {
if(item.getString().equals(string)) {
return item.getResId();
}
}
return -1;
}
}
然后这样称呼:
int resId = DrawableEnum.getResIdFromString("some string");
BitmapFactory.decodeResource(getResources(), resId);
答案 1 :(得分:0)
您将能够使用以下代码获取资源ID:
int resId = getResources().getIdentifier("some_string", "drawable", getPackageName());
BitmapFactory.decodeResource(getResources(), resId);