TextView的setText注意事项

##Do not concatenate text displayed with setText 当使用下面的方法对TextView进行setText时html

prodNameView.setText("" + name);  
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));

会有以下提示android

Do not concatenate text displayed with setText. Use resource string with placeholders.git

When calling TextView#setText:ide

  • 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.

简单来讲使用TextView的setText方法时,有三点要注意的:ui

  • 若是有数字,使用String#format方法来格式化
  • 别硬编码,而是使用Android的String资源文件
  • 别使用+进行字符串拼接

##例子 在String资源文件中声名编码

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

在TextView中经过setText设置code

hello.setText(getString(R.string.welcome_messages,"John",10));

##参考 stackoverflow中的问题orm

Android官方文档htm

相关文章
相关标签/搜索