使用strings.xml与%,$和/以及格式化。

8
我在strings.xml中添加了这一行,但它无法编译成R。
<string name="cl_txt_verinfo">清单版本:%1$s\n作者:%2$s\n创建日期:%3$s\n语言:%4$s</string> 我遇到的错误是:
错误:在非位置格式中指定了多个替换;您是否想添加formatted="false"属性? 错误:意外的结束标记字符串
我想问如何使它工作(稍后我将使用string.format)并且相对于不添加“formatted=false”有什么区别。
编辑: 干净和构建是我得到这个错误的方法。我已经得到很多次。 但是当我删除了一个空行并进行了全新的构建时,一切都正常了。 这真的很不一致,我不知道首先是什么引起了问题。
剩下两个问题: 1. 有人能告诉我“formatted=false”会产生什么区别吗? 2. 我怎么会有这种行为?(报告没有错误,然后我试图通过破坏事物来解决它并制造混乱)
这不是我唯一遇到错误然后魔法般地自己修复它的时候。有时我重新启动我的ADT并解决它,但这次很遗憾没有解决。

你发布的 XML 是正确的。你确定这就是产生错误信息的那个吗?另外,尝试清理项目以防该错误来自上一个版本的 XML。 - laalto
清理构建您的项目。laalto是正确的。您的字符串资源是有效的,没有显示任何错误。 - DCoder
谢谢!他们帮了我很多。现在我可以回去写代码了。 - Zuoanqh
1个回答

15
如果你添加了 formatted=false,那么字符串资源中的格式化符号(如%$等)将被禁用,Formatter就无法识别它们。这个链接肯定会对你有所帮助。
对于你的第二个问题,没有确切的解决方法,但我通常会删除gen和bin文件夹,然后进行清理并重新构建项目。这样做的目的是每次构建项目时,Android都会检查是否有新的资源可用,并将其添加到R.java中,只有在此之后才能使用它们。

谢谢你的回答。你获得了奖章! - Zuoanqh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接