Android,从字符串中获取资源 ID?
2022-08-31 06:51:08
我需要将资源 ID 传递给其中一个类中的方法。它需要使用引用指向的 id,还需要使用字符串。我应该如何最好地实现这一目标?
例如:
R.drawable.icon
我需要获取此整数ID,但我还需要访问字符串“icon”。
如果我必须传递给该方法的只是“icon”字符串,那将是更好的。
我需要将资源 ID 传递给其中一个类中的方法。它需要使用引用指向的 id,还需要使用字符串。我应该如何最好地实现这一目标?
例如:
R.drawable.icon
我需要获取此整数ID,但我还需要访问字符串“icon”。
如果我必须传递给该方法的只是“icon”字符串,那将是更好的。
@EboMike:我不知道它的存在。Resources.getIdentifier()
在我的项目中,我使用以下代码来执行此操作:
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;
}
}
它将像这样用于获取资源整数值的值R.drawable.icon
int resID = getResId("icon", R.drawable.class); // or other resource class
我刚刚发现一篇博客文章说这比我使用反射要慢。来看看吧。Resources.getIdentifier()
您可以使用此函数获取资源 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());