欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

java反射android的r文件的示例

程序员文章站 2023-08-29 20:35:43
动态取得r文件的int值,通过string-array name属性动态获取r.array.xxx的int值 复制代码 代码如下://通过string-array nam...

动态取得r文件的int值,通过string-array name属性动态获取r.array.xxx的int值

复制代码 代码如下:

//通过string-array name属性动态获取r.array.xxx的int值
public charsequence[] getlistdata(string name) {
        try {
            class<?> arrayclass = getarrayresource().getclass();
            field intfield = arrayclass.getfield(name);
            int sourceid = intfield.getint(name);
            return getresources().gettextarray(sourceid);
        } catch (exception e) {
            e.printstacktrace();
        }
        return null;
    }

private object arrayresource = null;

private object getarrayresource() {
        if (arrayresource == null) {
            class<?> resource = r.class;
            try {
                class<?>[] classes = resource.getclasses();
                for (class<?> c : classes) {
                    int i = c.getmodifiers();
                    string classname = c.getname();
                    string s = modifier.tostring(i);
                    if (s.contains("static") && classname.contains("array")) {
                        return c.getconstructor().newinstance();
                    } else {
                        continue;
                    }
                }
            } catch (exception e) {
                e.printstacktrace();
            }
        }
        return arrayresource;
    }