动态取得R文件的int值
[1].[代码] [Java]代码 跳至 [1]
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
|
//通过string-array name属性动态获取R.array.xxx的int值
public
CharSequence[] getListData(String name) {
try
{
Class<?> arrayClass = getArrayResource().getClass();
Field intField = arrayClass.getField(name);
int
sourceId = intField.getInt(name);
return
getResources().getTextArray(sourceId);
}
catch
(Exception e) {
e.printStackTrace();
}
return
null
;
}
private
Object arrayResource =
null
;
private
Object getArrayResource() {
if
(arrayResource ==
null
) {
Class<?> resource = R.
class
;
try
{
Class<?>[] classes = resource.getClasses();
for
(Class<?> c : classes) {
int
i = c.getModifiers();
String className = c.getName();
String s = Modifier.toString(i);
if
(s.contains(
"static"
) && className.contains(
"array"
)) {
return
c.getConstructor().newInstance();
}
else
{
continue
;
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
return
arrayResource;
}
|