gpt4 book ai didi

安卓 TextView : "Do not concatenate text displayed with setText"

转载 作者:IT老高 更新时间:2023-10-28 13:01:06 29 4
gpt4 key购买 nike

我正在通过以下方式使用 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 非常有趣,我使用了菜单 Analyze -> Code Cleanup,我得到了上面两行的建议。

enter image description here

Do not concatenate text displayed with setText. Use resource string with placeholders. less... (Ctrl+F1)

When calling TextView#setText:

  • Never call Number#toString() to format numbers; it will not handle fraction separators and locale-specific digits properly. Consider using String#format with proper format specifications (%d or %f) instead.
  • Do not pass a string literal (e.g. "Hello") to display text. Hardcoded text can not be properly translated to other languages. Consider using Android resource strings instead.
  • Do not build messages by concatenating text chunks. Such messages can not be properly translated.

为此我能做些什么?任何人都可以帮助解释这是什么以及我应该怎么做?

最佳答案

Resource 具有 getString 的 get 重载版本,它采用 Object 类型的 varargs:getString(int, java.lang.Object...) .如果您在 strings.xml 中正确设置了字符串,并使用了正确的占位符,则可以使用此版本来检索最终字符串的格式化版本。例如。

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

使用 getString(R.string.welcome_message, "Test", 0);

android 将返回一个带有

的字符串
 "Hello Test! you have 0 new messages"

关于 setText(""+ name);

您的第一个示例 prodNameView.setText(""+ name); 对我来说没有任何意义。 TextView 能够处理空值。如果 name 为 null,则不会绘制任何文本。

关于安卓 TextView : "Do not concatenate text displayed with setText",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164886/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com