首先,在开发一个app的时候,需要将用户设置的背景图片信息保存在配置文件(sharedPreference)中,其中名字的类型为String类型,一直不知道如何通过String来获得图片的Id。
最后,总结有两个方法:
方法一:
不将图片的名字保存,直接保存她的Id,sharedPreference可以保存String、Int、Boolean。所以直接保存他的Id就可以了。
方法二:
如果实在要保存为String,那么只能通过Java的反射机制通过名字来获得它的Id:
代码如下:
public int getImageResourceId(String name) {
R.drawable drawables=new R.drawable();
//默认的id
int resId=0x7f02000b;
try {
//根据字符串字段名,取字段//根据资源的ID的变量名获得Field的对象,使用反射机制来实现的
java.lang.reflect.Field field=R.drawable.class.getField(name);
//取值
resId=(Integer)field.get(drawables);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resId;
}
参数String name就是资源的名字,来获取她的Id