android string.xml %问题。


Multiple annotations found at this line:
    - error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" 
     attribute?
    - error: Unexpected end tag string

 

 

反复检查后发现是string.xml中的 % 致使编译失败,

这是因为新的SDK采用了新版本的aapt(Android项目编译器),这个版本的aapt编译起来会比老版本更加的严格,而后在Android最新的开发文档的描述String的部分,已经说明了 如何去设置 %s 等符号,下面是文档片断: If you need to format your strings using String.format(String, Object...) , then you can do so by putting your format arguments in the string resource. For example, with the following resource: 若是你须要使用 String.format(String, Object...) 来格式化你的字符串,你能够把格式化参数放在你的字符串中,参见下面的例子: <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> In this example, the format string has two arguments: %1$s is a string and %2$d is a decimal number. You can format the string with arguements from your application like this: 在这个例子中,这个格式化的字符串有2个参数, %1$s是个字符串 %2$d 是个浮点数,你能够在你的程序中按照下面的方法来根据参数来格式化字符串: Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); 那么根据例子上说的我须要把%s换成%1$s才行了,修改后编译经过,程序成功启动。 问题补充: 有读者问如何在<string></string>中使用%号 有两个办法可供选择 1.用%%来表示1个%,和转意符号 \ 的用法相同 2.若是你的字符串不须要格式化,能够在你的<string 标签上增长一个属性:formatted="false"例如 <string name="test" formatted="false">% test %</string> 便可
相关文章
相关标签/搜索