Kla*_*aak 2 android android-resources
我试图从 strings.xml 中获取值为“Hello”的字符串的 ID,执行以下操作:
getContext().getResources().getIdentifier("Hello", "string", getContext().getPackageName());
Run Code Online (Sandbox Code Playgroud)
它返回 0。为什么会返回 0?
因为您传递的是字符串value,而您应该传递字符串的资源名称。
查看方法签名:getIdentifier(String name, String defType, String defPackage)。
当找不到资源时,0会返回与您遇到的情况一致的信息。
编辑:
不鼓励使用getIdentifier()- 引用参考文献:
注意:不鼓励使用此功能。通过标识符检索资源比通过名称检索资源要高效得多。
我不知道根据相关字符串的值获取字符串 ID 的直接方法。不过我看到了两种解决方法/黑客:
命名您想要执行查找的所有字符串,如下所示:stringN例如N,其中 是每个字符串递增的从 0 开始的整数。您最终会得到丑陋的名称,例如string0,string1等。然后您自己进行查找 - 迭代N,创建字符串 ID: stringN,获取其值并检查是否匹配。我认为这很丑陋。
使用类型化数组资源并将所有字符串放在那里。它与方法 1 基本相同,但避免创建令人讨厌的、污染性的资源名称。
| 归档时间: |
|
| 查看次数: |
3778 次 |
| 最近记录: |