首页 > Java > java教程 > 如何从字符串名称中高效获取Android资源ID?

如何从字符串名称中高效获取Android资源ID?

DDD
发布: 2024-12-20 09:31:09
原创
563 人浏览过

How to Efficiently Get an Android Resource ID from its String Name?

在 Android 中从字符串获取资源 ID

将资源 ID 传递给方法时,通常需要访问 ID 和相应的字符串。例如,考虑“图标”资源:

R.drawable.icon
登录后复制

要获取 ID 和字符串“图标”,可以探索多种方法:

一种解决方案涉及利用资源。 getIdentifier() 方法:

int resID = getResources().getIdentifier("icon", "drawable", getPackageName());
String iconString = "icon";
登录后复制

但是,最近的研究表明 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;
    } 
}
登录后复制

要将此方法用于“图标”资源:

int resID = getResId("icon", R.drawable.class); // or other resource class
String iconString = "icon";
登录后复制

尽管这种反射方法可能更有效,但重要的是要注意潜在的缺点。在启用了代码/资源收缩的发布版本中,此解决方案可能会失败。此外,如果字符串名称与预期的资源名称格式不同,它可能不起作用。

以上是如何从字符串名称中高效获取Android资源ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板