如何动态根据资源名获取资源id

我用string拼接好了资源名称,如何获取这个资源名对应的资源id就是类似于android的getIdentifier方法

资源id
2021-09-08 10:14:09
浏览
1
收藏 0
回答 1
已解决
回答 1
按赞同
/
按时间
拓维信息Abin
4

你可以自己写一个java反射方法,去反射资源ID属性值,

private int getIdentifier(Context context, String type, String name) {
        String bundleName = context.getBundleName();
        String clazzName = bundleName + ".ResourceTable";
        Class<?> clazz = null;
        try {
            clazz = Class.forName(clazzName);
            if (clazz != null) {
                Field field = clazz.getDeclaredField(type + "_" + name);
                field.setAccessible(true);
                return field.getInt(clazz);

            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return 0;
    }

比如你要获取Layout布局文件的ID,

假设布局文件为ability_main.xml,资源ID为ResourceTable.Layout_ability_main;

使用方法就是getIdentifier(getContext(), "Layout", "ability_main");

注意第二参数的大小写。

 

已于2021-9-8 15:05:24修改
分享
微博
QQ
微信
回复
2021-09-08 15:05:00
相关问题
鸿蒙资源id哪里获取
3494浏览 • 1回复 待解决
如何通过资源ID拿到对应资源
4744浏览 • 3回复 待解决
鸿蒙如何获取资源文件种的路径
12243浏览 • 3回复 待解决
组件如何动态设置全局唯一ID
4260浏览 • 1回复 待解决
在OceanBase中,如何修改资源限制?
776浏览 • 1回复 待解决
Iamge组件如何加载Graphic的资源图片?
4449浏览 • 1回复 待解决
java如何引用resources资源获得value?
2042浏览 • 1回复 待解决
鸿蒙图片资源在Java代码中如何使用
5668浏览 • 1回复 待解决
list-item 根据boolean属性 动态设置class
2052浏览 • 1回复 待解决
找不到图片和布局资源
8665浏览 • 8回复 待解决
关于如何获取时钟的id的问题
3458浏览 • 1回复 待解决
富鸿蒙开发如何获取设备唯一Id
10635浏览 • 1回复 待解决
求js 中 class类动态绑定的问题?
4082浏览 • 1回复 待解决
openharmony上如何获取类似android_id的值
1739浏览 • 1回复 待解决
鸿蒙中的资源文件都又什么作用?
1307浏览 • 1回复 待解决
下载System-image-phone 2.0.0.210资源失败
8964浏览 • 7回复 待解决
OB的资源池是多租户共享吗?
2040浏览 • 1回复 待解决
SQL插入一个数据时,如何获取ID?
593浏览 • 2回复 待解决