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> 即可

更多相关文章

  1. Android重写SimpleCursorAdapter例子
  2. Android例子—常用系统Intent合集
  3. android LayoutInflater.inflate()的参数及其功能
  4. android Toast居中最简单例子
  5. appium启动APP配置参数:
  6. android中AudioRecord采集音频的参数说明
  7. Android例子—设置Activity全屏的三种方法
  8. Android消息机制之四---Looper,Handler,Message例子
  9. 【简单的学生管理界面】Android的if语句中有字符串判断

随机推荐

  1. 生产环境下的 Node.js 日志记录方案[每日
  2. 观察者模式
  3. 史上最全最强SpringMVC详细示例实战教程(
  4. Java中使用Jedis操作Redis
  5. 熬10天夜,肝出了这个PDF版「软件安装手册
  6. 阅完此文,Vue响应式不再话下
  7. java中关于Map的九大问题
  8. 史上最全最强SpringMVC详细示例实战教程(
  9. activity和service之间的相互通信方法
  10. 序列化/反序列化,我忍你很久了,淦!