通过反射读取R.drawable对应地图片资源id

来源:互联网 发布:淘宝有哪些好的女鞋店 编辑:程序博客网 时间:2024/04/27 22:32

1.首先R文件是一个java类而drawable是其一个静态内部类其所有的字段都为静态字段 对于静态字段通过反射读取时是不需要指定对象的所以 getInt(null)中的参数置空

protected int getDrawableId(String key) {      try {            String name = key;            Field field = R.drawable.class.getField(name);            return field.getInt(null);        } catch (SecurityException e) {        } catch (NoSuchFieldException e) {        } catch (IllegalAccessException e) {        }        return -1;    }

2,对于非静态字段我们是要指定对象参数的 like this

import java.lang.reflect.*;public class ClassDemo {   public int num = 123;   public static void main(String[] args) {     ClassDemo c = new ClassDemo();     Class cls = c.getClass();     System.out.println("Field =");     try {        // string field        Field sField = cls.getField("num");        int num1=0;        try {             num1=sField.getInt(c);        } catch (IllegalArgumentException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        }        System.out.println("Public field found: " + sField.toString()+"value="+num1);     }     catch(NoSuchFieldException e) {        System.out.println(e.toString());     }   }   public ClassDemo() {   }   public ClassDemo(int num) {             this.num = num;   }}
0 0