2.3xml格式细则

新android 2.3SDK之后,之前的一些项目就出现一些错误,具体内容为
  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

  这是由于新的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> 即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值