我通过以下方式使用setText()设置文本。
prodNameView.setText("" + name);
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
因为第一个是简单的用法,第二个是使用格式化文本设置文本。
Android Studio非常有趣,我使用了Menu,Analyze -> Code Cleanup
并且在上面两行得到了建议。
不要连接使用setText显示的文本。将资源字符串与占位符一起使用。更少...(Ctrl + F1)
调用TextView#setText时:
- 永远不要调用Number#toString()格式化数字;它不会正确处理分数分隔符和特定于语言环境的数字。考虑改用具有正确格式规范(%d或%f)的String#format。
- 不要传递字符串文字(例如“ Hello”)来显示文本。硬编码文本无法正确翻译为其他语言。考虑改用Android资源字符串。
- 不要通过串联文本块来构建消息。此类消息无法正确翻译。
我能为此做什么?任何人都可以帮助解释这是什么,我该怎么办?
NPE
如果name
是NULL
name
是不是NULL
使用以前setText()
的功能。
<string name="string_product_rate_with_ruppe_sign">Something %1$d</string>
而在Java代码中,你做这样的事情: prodOriginalPriceView.setText(getString(R.string.string_product_rate_with_ruppe_sign), price);
(你可以做在XML文件中的格式:[ developer.android.com/guide/topics/resources/...
String
传入setText()
。例如:setText(name)
代替setText("" + name)
。因为如果您串联文本,将不会像使用硬编码文本那样将其转换为消息通知