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

发布于 2021-02-02 23:06:19

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

例如:

R.drawable.icon

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

如果我只需要传递给该方法的是“ icon”字符串,那将是更好的选择。

关注者
0
被浏览
562
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我不知道那个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()比像我那样使用反射要慢



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看