TextView.setText() 遇到的问题

影子:

在开发中我们经常会在代码中去设置TextView的文本。
  • 在AS中你可能会遇到这样一个警告:Do not concatenate text displayed with setText. Use resource string with placeholders. (Ctrl + F1)
  • 有道译文:不要将显示的文本与setText连接。使用带有占位符的资源字符串。在调用TextView.setText 时,不要调用Number.toString()来格式化数字;它不会正确处理分数分隔符和特定于区域的数字。考虑使用格式规范(%d或%f)的字符串#格式。不要传递字符串字面意思。“你好”)来显示文本。硬编码的文本不能正确地翻译成其他语言。可以考虑使用Android资源字符串。*不要通过连接文本块来构建消息。(译文可能有误差,请忽略掉)
    警告原因AS已经说的很清楚了,现在我们看看如何解决。

解决格式规范(%d或%f)的字符串

常见格式的类似有:
  • %n$s--->n表示目前是第几个参数 (比如%1$s中的1代表第一个参数),s代表字符串
  • %n$d--->n表示目前是第几个参数 (比如%1$d中的1代表第一个参数),d代表整数
  • %n$f--->n表示目前是第几个参数 (比如%1$f中的1代表第一个参数),f代表浮点数

使用案列:
tv_Message.setText(String.format(getString(R.string.s_Message),1));
R.string.s_Message 内容:
<string name="s_Message ">这是第%d条消息</string>

好了,使用这种规范格式输出,恭喜你绿了不黄了。
妈妈再也不怕我是处女座了。
--2018/6/19
遇到类似<string name="s_Message ">进度为%d %</string>这种格式的字符串时,需要把%写成%%。
String.format() 中单个%是会报错的,需要显示单个%时,用两个%代替。
<string name="s_Message ">进度为%d %%</string>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,526评论 0 5
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,718评论 0 17
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,185评论 0 7
  • 全文总目录 经过一个月的筹备,秋域贸易有限公司的牌子在新办公场地正式挂起来了,新招聘的人员也全部正式入职了。在公司...
    简小尘阅读 333评论 1 2
  • 个人喜欢的运行顺序:su,然后start-all,有可能存在修改ip的情况,ifconfig查看就可以,对应改co...
    Babus阅读 812评论 0 2