引用: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

通过代码获取res里生成R.java中的值的更多相关文章

  1. 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题

    因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...

  2. 新建Android工程没有自动生成R.JAVA,应该先升级下ADT

    前几天非常郁闷,本来计划在Android上做个小东西,结果打开Eclipse新建工程,发现居然没有R.JAVA! 反复测试很多次,均未成功,最后试着升级了下ADT,结果搞定,在这里记下,下次遇到这样的 ...

  3. android 工程里缺少 R.java 文件原因和解决方法

    作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...

  4. eclipse android 不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法   我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...

  5. 64位Ubuntu下的Eclipse、ADT终于可以生成R.java了,虚机也可以正常建立

    64位Ubuntu12下的Eclipse总也不能自动生成R.java,导致无法正常编译程序,建虚拟器的时候总是提示少文件....三天下班机器没关(无奈公司网络不给力)来安装lib包. 各种加载,总结一 ...

  6. 解决用Eclipse开发Android程序时不能生成R.java的问题

    今天我照着Mars老师的视频教程开始学习Android程序开发. 但是,我的Eclipse死活不能生成R.java文件,新建的工程也不行. 然后我百度,百度出来的结果一般是说这样解决: 1.clean ...

  7. [转]eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法

    原网址 : http://www.cnblogs.com/zdz8207/archive/2012/11/30/eclipse-android-adt-update.html 网上解决方法主要有这几种 ...

  8. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中

    第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...

  9. 为什么说Java中只有值传递?

    一.为什么说Java中只有值传递? 对于java中的参数传递方式中是否有引用传递这个话题,很多的人都认为Java中有引用传递,但是我个人的看法是,Java中只有值传递,没有引用传递. 那么关于对象的传 ...

随机推荐

  1. aps.net cored 新概念

    Tag Helpers The EnvironmentTagHelper can be used to include different scripts in your views (for exa ...

  2. SpringMVC中使用Interceptor拦截器

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  3. Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  4. android——利用SharedPreference做引导界面

    很久以前就接触过sharedPreference这个android中的存储介质.但是一直没有实际使用过,今天在看之前做的“民用机型大全”的app时,突然想到可以使用sharedPreference类来 ...

  5. 【资料下载区】【iCore3相关代码、资料下载地址】更新日期2017/1/5

    [iCore3 ARM代码下载地址][全部]DEMO1.0测试程序发布例程一:ARM驱动三色LED例程二:读取arm按键状态例程三:EXTI中断输入实验——读取ARM按键状态例程四:USART通信实验 ...

  6. SSH框架简化

    通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tom ...

  7. 简单实用JSTL标签库

    1. JSTL标签库是一个什么东东? 简单来说,有了它你就可以在类似HTML的JSP页面里面运用一些高级语法,实现迭代.条件判断.XML文档操作.国际化标签.SQL标签. 2. 如何使用 ? 参考网址 ...

  8. ios 中scrollview上面嵌套tableView,左右滑动出现数据多次刷新的问题

    注意scrollView左右滑动时不要刷新数据,刚进来时一次性请求所有数据 红包纪录和房源信息可以左右滑动和点击,tableView可以上下滑动,图片部分个人信息只刷新一次. 界面布局如下

  9. RFID电子标签天线的印刷

    RFID 电子标签技术又称RFID(Radio FrequencyIdentification)射频识别技术,是一种非接触式的自动识别技术,通过相距几厘米到几米距离内传感器发射的无线电波,可以读取RF ...

  10. JavaScript的3大组成部分&&ECMAScript函数&&闭包

    1.JavaScript实现是由ECMAScript.DOM和BOM组成.a.ECMAScript仅仅是一个描述,定义了脚本语言的所有属性.方法和对象.b.DOM[文档对象模型]是HTML和XML的应 ...