zoukankan      html  css  js  c++  java
  • android中String.xml报错Multiple annotations found at this line

    本文来源于:hunter的博客(http://my.oschina.net/hunterXue/blog/15107

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

  • 相关阅读:
    Open 5分钟:恺英收集闵懿
    Open 5分钟:摩卡全国宋啸飞
    互联网十大病毒集体名单曝光
    浩大游戏CEO谭群钊:2011将进一步加大海内拓展
    CustomSongSender.com:定制歌曲作为礼物
    米聊:跨运营商收费即时通讯
    说说Google Cloud Connect
    松下将于3月19日出售无需触碰的感触式便携电视
    Groupon中国网站贵客上线 获腾讯云锋基金投资
    诺基亚西门子并购摩托罗案前景堪忧
  • 原文地址:https://www.cnblogs.com/tefcricul/p/3134845.html
Copyright © 2011-2022 走看看