Android 资源 ID 分配不正确

标签 android string resources

我遇到了一个奇怪的问题,如果我不时调用getString(R.string.somestringname),即使在删除R 文件并重新编译之后,也会出现不正确的字符串。模拟器没有崩溃,并且出现了一个有效的字符串 - 只是错误的字符串。

我的 strings.xml 示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Activity Names -->
    <string name="app_name">an app name</string>
    <string name="selector_name">app name | Select</string>
    <string name="create">Create</string>
    <string name="overview_name">appname | Overview</string>
    <string name="another_name">appname | Another View</string> 

.....
    <!-- Edit Note -->
    <string name="placeholder">Foo bar</string> <-- here is a problem
    <string name="created">Created:</string>

</resources>

这是遇到其中一个问题的代码示例:

if (note.created != null) {
     createdtext.setText(getString(R.string.created) + " " + Util.longDateFormat(note.created));
}

输出的文本(有时)是 Foo bar November 03, 2010(即属于 R.string.placeholder)。到底是怎么回事?这让我很想对字符串进行硬编码;-)

感谢您的帮助!

最佳答案

使用 ant clean install 而不仅仅是 ant install

Java 将像 R.id 值这样的常量内联到生成的字节码中,有时您的类没有被重新编译,即使它们需要重新编译。理想情况下,ant install 会正确处理这个问题;在它完成之前,ant clean install 是你的 friend 。

关于Android 资源 ID 分配不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084460/

相关文章:

java - 在 Java 中,如何在 Web 应用程序中动态重新加载资源包?

android - FusedLocationProviderClient 没有方位数据

android - Sentry React Native 崩溃 - Native Client 不可用,无法在 native 上启动

android - 如何从 https ://maven. google.com 检查可用的库和版本号

C++ Do - While 循环直到字符串满足特定条件

java - 时间选择器整数错误

c# - 如何检索嵌入式 xml 资源?

java - 从另一个 fragment 导航后返回时 ViewPager 不可见

string - 在 Golang 中达到定义的最大长度之前,如何将跟随者字符连接到字符串?

java - 如何用 Java 1.4 兼容版本替换 @Resource 注解