我真的不知道为什么,但我无法检索字符串的 Id。
这是我的代码:
int resId = getApplicationContext().getResources()
.getIdentifier("About_EmailPrompt", "string", "com.yoki.android.cat");
但它适用于所有其他类的 R 文件:
int resId = getApplicationContext().getResources()
.getIdentifier("arrow","drawable", "com.yoki.android.cat");
所以我真的不明白这里发生了什么,有什么想法吗?
最佳答案
这段代码看起来是正确的代码:
int resId = getApplicationContext().getResources().getIdentifier("About_EmailPrompt", "string", "com.yoki.android.cat");
它应该可以工作,但如果没有,我建议你不要试图绕过这个并尝试理解它为什么不起作用:
1) 首先尝试在您的项目中找到下一个声明的字段:
About_EmailPrompt
如果你使用 eclips,你应该按下 Ctrl+H 并打开 Java Search 标签
如果您得到搜索结果,请转到第 2 步,否则请转到第 3 步
2) 你应该得到层次结构的结果
<YOUR_PACKAGE_NAME> -- R -- string -- About_EmailPrompt
2.1) 检查您在代码中写入正确的包名
.getIdentifier("About_EmailPrompt", "string", <YOUR_PACKAGE_NAME>);
2.2) 检查您在文字字符串中仅使用拉丁符号:
"About_EmailPrompt"
和
"string"
2.3) 检查您在 strings.xml
name
属性中仅使用拉丁符号
<string name="About_EmailPrompt">SOME_VALUE</string>
3) 如果没有搜索结果
3.1) 检查您在文字字符串中仅使用拉丁符号:
"About_EmailPrompt"
3.2) 检查您在 strings.xml
name
属性中仅使用拉丁符号
<string name="About_EmailPrompt">SOME_VALUE</string>
3.3) 为您拥有的所有项目进行清理和构建
附:如果这对您没有帮助,请尝试重新启动您的 IDE(有时 eclipse 会错误地生成 R.java,直到重新启动)
关于Android getIdentifier 不适用于字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662316/