Android getIdentifier 不适用于字符串?

标签 android

我真的不知道为什么,但我无法检索字符串的 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 标签 Java Search Dialog

如果您得到搜索结果,请转到第 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/

相关文章:

android - 如何使用 Eclipse 构建和运行 cordova 项目以及运行 android 项目

android - 获取 ListItem ContextMenu 中的选定项目

Android Room FOREIGN KEY 约束失败(代码 787)

java - 问题模式/匹配器

android - 使用 Cordova 插件的 Google Cloud Messaging IOS 注册

android - 在远程服务器上运行/控制模拟器

Android - BottomSheetDialog 在软件 NavigationBar 下

android - 具有不同颜色的标准 Android 按钮

java - 使用 GSON 将嵌套 JSON 解析为通用集合

java - Android 检查值是否等于数组中的值