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

有时候因为某些包不能通过 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;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,400评论 2 54
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,598评论 1 14
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 6,124评论 0 9
  • 又画铃兰了,不过这回是参考教程的。 用的是雪山水彩木浆纸,八开对半折。 第一步,认真看整体花型,包括花瓣形态、花蕾...
    手绘者焕新阅读 1,732评论 6 18
  • 一、健康 1.饮食 近期每周至少吃5顿自己做的饭。50天后,换住处,每天至少做一顿饭。 2.运动 每天走路20分钟...
    倾子萸阅读 319评论 0 2

友情链接更多精彩内容