我通过以下方式使用 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,我得到了上面两行的建议。
Analyze -> Code Cleanup
不要连接使用 setText 显示的文本。将资源字符串与占位符一起使用。少… (Ctrl+F1) 调用 TextView#setText 时: 永远不要调用 Number#toString() 来格式化数字;它不会正确处理分数分隔符和特定于语言环境的数字。考虑改用具有正确格式规范(%d 或 %f)的 String#format。 不要传递字符串文字(例如“Hello”)来显示文本。硬编码文本无法正确翻译成其他语言。考虑改用 Android 资源字符串。 不要通过连接文本块来构建消息。此类消息无法正确翻译。
不要连接使用 setText 显示的文本。将资源字符串与占位符一起使用。少… (Ctrl+F1)
调用 TextView#setText 时:
我能为此做些什么?任何人都可以帮助解释这是什么,我该怎么办?
Resource 具有 getString 的 get 重载版本,它采用以下varargs类型Object:getString(int, java.lang.Object…)。如果您在 strings.xml 中正确设置了字符串,并使用了正确的占位符,则可以使用此版本来检索最终字符串的格式化版本。例如
varargs
Object
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
使用getString(R.string.welcome_message, "Test", 0);
getString(R.string.welcome_message, "Test", 0);
android将返回一个字符串
"Hello Test! you have 0 new messages"
关于 setText("" + name);
setText("" + name);
您的第一个示例prodNameView.setText("" + name);对我没有任何意义。TextView 能够处理空值。如果 name 为 null,则不会绘制任何文本。
prodNameView.setText("" + name);