问题
编辑strings.xml的时候


在行

<string name="myurl">http://code.dd.com/rr?q=%rr.55</string>

或者

<string name="message_content'>恭喜您你获得%1s 积分,占比%2s  %</string>

提示下面的错误

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


出现这个错误的原因主要是因为strings字串中包含百分号(%),

一:有几种方式解决

1.用两个百分号表示一个百分号即

<string name="myurl">http://code.dd.com/rr?q=%%rr.55</string>

<string name="message_content'>恭喜您你获得%1s 积分,占比%2s %%</string>


2.用转义符表示

<string name="myurl">http://code.dd.com/rr?q=\%rr.55</string>


二:无需格式化

根据错误提示可知,如果字符串无需格式化,可在<string 标签上增加属性:formatted="false",即

<string name="myurl" formatted="false">http://code.dd.com/rr?q=%rr.55</string>


三:关于上面问题的延伸

如果你需要使用 String.format(String, Object...) 来格式化你的字符串,你可以把格式化参数放在你的字符串中,参见下面的例子:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

在这个例子中,这个格式化的字符串有2个参数, %1$s是个字符串 %2$d 是个浮点数,你可以在你的程序中按照下面的方法来根据参数来格式化字符串:

Resources res = getResources();

String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

那么根据例子上说的我需要把%s换成%1$s才行了,修改后编译通过,程序成功启动。

更多相关文章

  1. Android 字符串资源
  2. 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如
  3. java中 16进制字符串 与普通字符串 与 byte数组 之间的转化
  4. 忽略转义字符时拆分字符串
  5. 使用字符串参数调用AndroidJni静态方法。
  6. java中匹配字符串中的中文字符(含中文标点的)
  7. String字符串的应用
  8. java 正则表达式查找某段字符串中所有小写字母开头的单词并统计
  9. Javascript 检查字符串是否是数字的几种方法

随机推荐

  1. 新浪微博Oauth2.0授权认证及SDK、API的使
  2. 【Android】Activity知识点
  3. android GridView 去掉自带点击边框效果
  4. ImageView、Bitmap的属性android:scaleTy
  5. Android_VectorDrawable矢量图与SVG
  6. Edittext 取消长按 复制和粘糊等操作
  7. Android_查看linux内核版本和android文件
  8. OpenMax
  9. android中的menu和子menu小结
  10. Android中使用sqlite笔记