【问题标题】:Get Resource ID from Uri从 Uri 获取资源 ID
【发布时间】:2014-12-30 15:35:55
【问题描述】:

你们知道是否可以从 Uri 获取资源 id 吗?

例如来自

Uri soundUri = Uri.parse("android.resource://" + packageName + "/raw/" + name);

得到这个的等价物

R.raw.name

谢谢大家!

【问题讨论】:

  • 我在做这个之前读过那个,我不相信它是重复的,因为提问者要求做一些不可能的事情。因为我知道 resID 已经在 Raw 文件夹中,所以我很确定这是可以做到的。

标签: android


【解决方案1】:
imageView.setImageResource(context.getResources().
         getIdentifier(name, "raw", context.getPackageName()));

你也可以用这个

public static int getResId(String variableName, Class<?> c) {

    try {
        Field idField = c.getDeclaredField(variableName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}

getIdentifier

【讨论】:

  • 感谢您认真对待我的问题!这就是我一直在寻找的。我将尝试制定一种将您的警告考虑在内的方法。
【解决方案2】:

如果问题是是否可以通过编码中给出的名称获取资源 id,那么 - 是的。

getIdentifier( name , "raw" , packageName );

不过线程很轻。它正在使用反射,因此如果您使用 proguard 可能很容易中断。您已收到警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    相关资源
    最近更新 更多