关于Android资源文件中出现百分号的问题

问题
编辑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才行了,修改后编译通过,程序成功启动。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值