引用: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文件中,使用
|
|
View view = getLayoutInflater().inflate(ResUtil.getResofR(this).getLayout("activity_main"), null);
set
|
- 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题
因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...
- 新建Android工程没有自动生成R.JAVA,应该先升级下ADT
前几天非常郁闷,本来计划在Android上做个小东西,结果打开Eclipse新建工程,发现居然没有R.JAVA! 反复测试很多次,均未成功,最后试着升级了下ADT,结果搞定,在这里记下,下次遇到这样的 ...
- android 工程里缺少 R.java 文件原因和解决方法
作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...
- eclipse android 不会自动生成R.java文件和包的解决办法
eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...
- 64位Ubuntu下的Eclipse、ADT终于可以生成R.java了,虚机也可以正常建立
64位Ubuntu12下的Eclipse总也不能自动生成R.java,导致无法正常编译程序,建虚拟器的时候总是提示少文件....三天下班机器没关(无奈公司网络不给力)来安装lib包. 各种加载,总结一 ...
- 解决用Eclipse开发Android程序时不能生成R.java的问题
今天我照着Mars老师的视频教程开始学习Android程序开发. 但是,我的Eclipse死活不能生成R.java文件,新建的工程也不行. 然后我百度,百度出来的结果一般是说这样解决: 1.clean ...
- [转]eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
原网址 : http://www.cnblogs.com/zdz8207/archive/2012/11/30/eclipse-android-adt-update.html 网上解决方法主要有这几种 ...
- 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中
第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...
- 为什么说Java中只有值传递?
一.为什么说Java中只有值传递? 对于java中的参数传递方式中是否有引用传递这个话题,很多的人都认为Java中有引用传递,但是我个人的看法是,Java中只有值传递,没有引用传递. 那么关于对象的传 ...
随机推荐
- Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_The49DayPersonalFullscreenGiftModel", referenced from: objc-class-ref in The49DayPersonalRoomGiftModel.o ld: symbol(s) not found for a
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_The49DayPersonalFullscreenGiftModel&q ...
- Servlet和Struts2同时使用
在做WEB项目时,要么是Struts+Spring+Hibernate,要是就直接使用servlet.这次碰到一个项目,经理想要把之前一个用servlet做的部分模块移植到当前项目下(Struts+S ...
- css实现水平垂直居中
一.单行文字居中: height: 100px;height: 100px;overflow: hidden; 二.多行内容居中(容器的高度不能固定): padding-top: 24px;paddi ...
- SQL SERVER数据类型与C#数据类型对照表
SQL SERVER类型 C#类型 精确数字 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数 ...
- vb6保存项目到c盘的安装目录
工程保存在安装目录("C:\Program Files (x86)\Microsoft Visual Studio\VB98\errhandler1.vbp")里. 文件管理器找不 ...
- http详解
mac地址是网卡出厂的时候给定的固定地址.ip是当前节点被分配的地址,mac和ip相互配对: ip间通信- http本身是无状态无连接的,因为有这样的特性才能让他适用于当今这么复杂的网络环境. 但是有 ...
- wordpress 分类相关
分类类型,层级 wp中的分类.文章类型(post,page,video,image).标签.自定义分类.自定义标签都是分类形式.有些分类是有层级关系,有些没有.如图: taxonomy分类(categ ...
- svn中第一次check out working copy项目下来出现 ld: library not found for -lcrypto clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个问题主要是.a文件的忽略删除,需要更改设置,并且把文件重新添加
- 用Arduino剖析PWM脉宽调制
PWM(Pulse Width Modulation)简介 PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号,也就是方波信号.多用于在数字电路中驱动负载随时间变化的电子元件,如LED,电机等. ...
- Linux 升级修改libc gcc 文件名称,导致执行命令失效问题解决
升级linux文件时,若不小心把文件名给重命名了,结果导致执行所有命令都不识别. 比如我们不小心执行了 mv /lib64/libc.so.6 /lib64/libc.so.6.bak 结果导致所有系 ...