Android开发集锦之四十四:string.xml中的 % 导致编译失败
2013-04-30 10:18
423 查看
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中有%引起的。
有两个办法可供选择
1.用%%来表示1个%,和转意符号 / 的用法相同
2.如果你的字符串不需要格式化,可以在你的<string 标签上增加一个属性:formatted="false"例如 <string name="test" formatted="false">% test %</string> 即可
但是什么原因呢?
网上的解释是这样的:
这是由于新的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才行了,修改后编译通过,程序成功启动。
相关文章推荐
- Android开发在string.xml文件中设置部分字体颜色大小
- Android开发在string.xml文件中设置部分字体颜色大小
- Android开发string.xml中动态配置多个字符串内容
- Android在Eclipse下编译String.xml出现Multiple substitutions specified in non-positional format 错误
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- 使用make编译android项目时,修改了文件xml文件名称,导致编译出错的问题原因
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- android 编译打包 更新导致apk覆盖失败,提示文件破损,或同名文件异常
- Android开发中的那些坑之-------------string.xml里面的通配符
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败 pCmd.CreateInstance("ADODB.Command") 0x80004002
- android开发动态设置string.xml中某一部分的值
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- Android开发在string.xml文件中设置部分字体颜色大小
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- Eclipse中编译Android项目工程失败,提示: Error in an XML file: aborting build 解决办法
- Ubuntu 16.04编译Android,make 版本过高导致编译失败的问题
- VC编译ADO的开发环境和客户环境的细微差别可能导致的失败
- com.sun.org.apache.xml.internal.security.utils.Base64 包找不到导致编译失败