Android资源ID分配错误

时间:2010-11-03 05:36:02

标签: 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)。到底是怎么回事?这令人不安地让我想要对字符串进行硬编码; - )

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

使用ant clean install代替ant install

Java将类似R.id值的常量内联到生成的字节码中,有时候你的类不会被重新编译,即使它们需要。理想情况下,ant install可以正确处理;直到它,ant clean install是你的朋友。