小编典典

Android,从字符串中获取资源ID?

all

我需要将资源 ID 传递给我的一个类中的方法。它既需要使用引用指向的 id,也需要使用字符串。我应该如何最好地实现这一目标?

例如:

R.drawable.icon

我需要获取它的整数 ID,但我还需要访问字符串“icon”。

如果我必须传递给该方法的只是“图标”字符串,那将是可取的。


阅读 84

收藏
2022-08-21

共1个答案

小编典典

@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()比像我一样使用反射要慢。检查出来

2022-08-21