Android 动态获取 id 获取资源 反射获取资源id

2019-03-15  本文已影响0人  Asbefore如初_3142

有时候因为某些包不能通过 R.java 依赖访问资源文件
这时候只能通过反射获取 资源

/**
     * 反射得到组件的id号
     * @param packageName 包名
     * @param className  layout,string,drawable,style,id,color,array
     * @param idName    唯一文件名
     * @return  资源id
     */
    public static int getCompentID(String className, String  idName) {
        int id = -1;
        Log.v("testapp", "appname  :"+GameApplication.getContext().getPackageName());
        try {
            Class<?> cls =  Class.forName(GameApplication.getContext().getPackageName()
                       + ".R$" + className);
            Log.v("testapp", "classname :"+cls.getName());
            id = cls.getField(idName).getInt(cls);
        } catch (Exception e) {
            e.printStackTrace();
            Log.v("testapp", "get error");
        }
        return id;
    }
上一篇下一篇

猜你喜欢

热点阅读