通过代码获取res里生成R.java中的值

简介: 引用:http://my.eoe.cn/blue_rain/archive/552.html 有的时候我们生成库文件,需要在里面加入一些UI,并提供出一些xml的资源,那如何在其他项目中使用呢? 我们只需要在需要生成库文件的代码中不要直接是用R. ,而是使用自己写的方法获取。

引用:http://my.eoe.cn/blue_rain/archive/552.html

有的时候我们生成库文件,需要在里面加入一些UI,并提供出一些xml的资源,那如何在其他项目中使用呢?

我们只需要在需要生成库文件的代码中不要直接是用R. ,而是使用自己写的方法获取。

下面上代码:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import java.lang.reflect.Field;

import android.content.Context;
import android.util.Log;

public class ResUtil {
     private static final String TAG = ResUtil.class.getName();
      private static ResUtil instance;
      private Context context;
      private static Class id= null;
      private static Class drawable = null;
      private static Class layout = null;
      private static Class anim = null;
      private static Class style = null;
      private static Class string = null;
      private static Class array = null;

      private ResUtil(Context paramContext)
      {
        this.context = paramContext.getApplicationContext();
        try
        {
            drawable = Class.forName(this.context.getPackageName() + ".R$drawable");
        }
        catch (ClassNotFoundException localClassNotFoundException1)
        {
          Log.i(TAG, localClassNotFoundException1.getMessage());
        }
        try
        {
            layout = Class.forName(this.context.getPackageName() + ".R$layout");
        }
        catch (ClassNotFoundException localClassNotFoundException2)
        {
          Log.i(TAG, localClassNotFoundException2.getMessage());
        }
        try
        {
          id = Class.forName(this.context.getPackageName() + ".R$id");
        }
        catch (ClassNotFoundException localClassNotFoundException3)
        {
          Log.i(TAG, localClassNotFoundException3.getMessage());
        }
        try
        {
            anim = Class.forName(this.context.getPackageName() + ".R$anim");
        }
        catch (ClassNotFoundException localClassNotFoundException4)
        {
          Log.i(TAG, localClassNotFoundException4.getMessage());
        }
        try
        {
            style = Class.forName(this.context.getPackageName() + ".R$style");
        }
        catch (ClassNotFoundException localClassNotFoundException5)
        {
          Log.d(TAG, localClassNotFoundException5.getMessage());
        }
        try
        {
            string = Class.forName(this.context.getPackageName() + ".R$string");
        }
        catch (ClassNotFoundException localClassNotFoundException6)
        {
          Log.d(TAG, localClassNotFoundException6.getMessage());
        }
        try
        {
            array = Class.forName(this.context.getPackageName() + ".R$array");
        }
        catch (ClassNotFoundException localClassNotFoundException7)
        {
          Log.d(TAG, localClassNotFoundException7.getMessage());
        }
      }

      public static ResUtil getResofR(Context paramContext)
      {
        if (instance == null)
            instance = new ResUtil(paramContext);
        return instance;
      }

      public int getAnim(String paramString)
      {
        return getResofR(anim, paramString);
      }

      public int getId(String paramString)
      {
        return getResofR(id, paramString);
      }

      public int getDrawable(String paramString)
      {
        return getResofR(drawable, paramString);
      }

      public int getLayout(String paramString)
      {
        return getResofR(layout, paramString);
      }

      public int getStyle(String paramString)
      {
        return getResofR(style, paramString);
      }

      public int getString(String paramString)
      {
        return getResofR(string, paramString);
      }

      public int getArray(String paramString)
      {
        return getResofR(array, paramString);
      }

      private int getResofR(Class<?> paramClass, String paramString)
      {
        if (paramClass == null)
        {
          Log.d(TAG, "getRes(null," + paramString + ")");
          throw new IllegalArgumentException("ResClass is not initialized.");
        }
        try
        {
          Field localField = paramClass.getField(paramString);
          int k = localField.getInt(paramString);
          return k;
        }
        catch (Exception localException)
        {
          Log.d(TAG, "getRes(" + paramClass.getName() + ", " + paramString + ")");
          Log.d(TAG, "Error getting resource. Make sure you have copied all resources (res/) from SDK to your project. ");
          Log.d(TAG, localException.getMessage());
        }
        return -1;
      }
}

使用方法:在要生成库文件的Java文件中,使用

1
2
View view = getLayoutInflater().inflate(ResUtil.getResofR(this).getLayout("activity_main"), null);
        set
相关文章
|
8月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
575 6
|
9月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
1179 3
|
9月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
1092 3
|
9月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
414 4
|
11月前
|
Java 数据安全/隐私保护
快手小红书抖音留痕工具,自动留痕插件工具,java代码开源
这个框架包含三个核心模块:主操作类处理点赞评论、配置管理类和代理管理类。使用时需要配合
|
10月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
294 2
|
9月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
679 0
|
8月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
389 115
|
8月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
287 98