获取一个资源的resId的值:
一般我们可以在Android工具帮我们生成的R.java里看到这个数值,并且这个值一般都是integer的值。
以前我们在获取这个resId的值的时候,我会考虑用反射的方式去获取它。比如:
1
public
static
int getResId(String fieldName, Context context, Class<?> c) {
2 int resId = -1;
3 try {
4 Field f = c.getDeclaredField(fieldName);
5 resId = f.getInt(f);
6 } catch (Exception e) {
7 e.printStackTrace();
8 }
9 return resId;
2 int resId = -1;
3 try {
4 Field f = c.getDeclaredField(fieldName);
5 resId = f.getInt(f);
6 } catch (Exception e) {
7 e.printStackTrace();
8 }
9 return resId;
10 }
而现在我们可以通过系统给的一个比较简单的方法去获取这个值了,以前一直不知道它的存在,惭愧,如下:
1
public
static
int getResId(String fieldName, String resType, Context context) {
2 return context.getResources().getIdentifier(fieldName, resType, MY_PROJECT_PACKAGE);
2 return context.getResources().getIdentifier(fieldName, resType, MY_PROJECT_PACKAGE);
3 }