美文网首页
Android 动态获取 id 获取资源 反射获取资源id

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

作者: Asbefore如初_3142 | 来源:发表于2019-03-15 15:39 被阅读0次

有时候因为某些包不能通过 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;
    }

相关文章

网友评论

      本文标题:Android 动态获取 id 获取资源 反射获取资源id

      本文链接:https://www.haomeiwen.com/subject/cwfrmqtx.html