我通过以下方式使用 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 资源字符串。
- 不要通过连接文本块来构建消息。此类消息无法正确翻译。
我能为此做些什么?任何人都可以帮助解释这是什么,我该怎么办?
原文由 Pratik Butani 发布,翻译遵循 CC BY-SA 4.0 许可协议
Resource 具有 getString 的 get 重载版本,它采用
varargs
类型为Object
: getString(int, java.lang.Object…) 。如果您在 strings.xml 中正确设置了字符串,并使用了正确的占位符,则可以使用此版本来检索最终字符串的格式化版本。例如使用
getString(R.string.welcome_message, "Test", 0);
android将返回一个字符串
关于
setText("" + name);
您的第一个示例
prodNameView.setText("" + name);
对我没有任何意义。 TextView 能够处理空值。如果 name 为 null,则不会绘制任何文本。