chu*_*ll0 5 android android-5.0-lollipop
在运行5.0的Android设备上查看我的应用时,我注意到了一个奇怪的错误.
在5.0之前的设备上,我的应用会在必要时将逗号添加到数字中.例如"1,234"或"100,000"
在5.0设备上,相同的代码将这些数字显示为"1234"或"100000".有没有其他人注意到这一点?
我已经包含了我的代码来格式化下面的数字 - 我不确定需要更改棒棒糖设备以显示正确的格式.
public static String formatNumber(Integer number, String prefix) {
if (prefix == null) {
prefix = Constants.PREFIX_SYMBOL;
}
StringBuilder stringBuilder = new StringBuilder(prefix);
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en_UK"));
stringBuilder.append("").append(numberFormatter.format(number));
return stringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)
所以我认为解决方法如下
public static String formatNumber(Integer number, String prefix) {
if (prefix == null) {
prefix = Constants.PREFIX_SYMBOL;
}
StringBuilder stringBuilder = new StringBuilder(prefix);
NumberFormat numberFormatter = NumberFormat.getIntegerInstance();
stringBuilder.append("").append(numberFormatter.format(number));
return stringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)
从NumberFormat.getIntegerInstance();通话中删除Locale 似乎可以解决问题.这是添加的,因为在格式化这里指定的整数时,一些Locales将使用非ASCII十进制数字.我不认为我的应用程序可用的区域就是这种情况所以应该这样做.
编辑:
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en_UK"));
Run Code Online (Sandbox Code Playgroud)
可以替换为
NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en", "GB"));
Run Code Online (Sandbox Code Playgroud)
这将防止默认语言环境使用非ASCII十进制数字.
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |