我需要将资源ID传递给我的某个类中的方法。它既需要使用引用所指向的id,也需要使用字符串。我应该如何最好地实现这一点?
例如:
R.drawable.icon
我需要获取它的整数ID,但我还需要访问字符串"icon“。
如果我要传递给这个方法的只是"icon“字符串,那就更好了。
发布于 2010-12-13 19:21:41
@EboMike:我不知道
存在。
在我的项目中,我使用了以下代码:
public static int getResId(String resName, Class c) {
try {
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
它的用法如下所示,用于获取
资源整数值
int resID = getResId("icon", R.drawable.class); // or other resource class
我刚发现一篇博文说
比我使用反射要慢。
看看这个
..。
发布于 2013-09-30 19:48:07
您可以使用此函数获取资源ID。
public static int getResourceId(String pVariableName, String pResourcename, String pPackageName)
{
try {
return getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
所以如果你想
可绘制的
像这样调用函数
getResourceId("myIcon", "drawable", getPackageName());
对于字符串,你可以这样调用它
getResourceId("myAppName", "string", getPackageName());
阅读这篇文章
发布于 2013-07-13 03:12:52
这是基于@Macarse的答案。
使用它以更快和代码友好的方式获取资源Id。
public static int getId(String resourceName, Class c) {
try {
Field idField = c.getDeclaredField(resourceName);
return idField.getInt(idField);
} catch (Exception e) {
throw new RuntimeException("No resource ID found for: "
+ resourceName + " / " + c, e);
}
}
示例:
getId("icon", R.drawable.class);
https://stackoverflow.com/questions/4427608
复制相似问题