android - 数字格式 Android 5.0

标签 android android-5.0-lollipop

我在运行 5.0 的 Android 设备上查看我的应用程序时发现了一个奇怪的错误。

在 5.0 之前的设备上,我的应用程序会在必要时将逗号添加到数字中。例如“1,234”或“100,000”

在 5.0 设备上,相同的代码将这些数字显示为“1234”或“100000”。有没有其他人注意到这一点?

我已经包含了我的代码来格式化下面的数字 - 我不确定 Lollipop 设备需要更改什么才能显示正确的格式。

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();
}

最佳答案

所以我认为解决方法如下

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();
}

NumberFormat.getIntegerInstance(); 调用中删除区域设置似乎可以解决问题。这是添加的,因为某些区域设置在按照指定格式化整数时将使用非 ASCII 十进制数字 here .我认为我的应用可用的区域不会出现这种情况,因此它应该可以解决问题。

编辑:

NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en_UK"));

可以替换为

NumberFormat numberFormatter = NumberFormat.getIntegerInstance(new Locale("en", "GB"));

这将防止默认语言环境使用非 ASCII 十进制数字。

关于android - 数字格式 Android 5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400501/

相关文章:

android - 非 PlayStore 应用上的 Google Cloud Messaging

java - 如何从顶部栏/状态栏中删除这种灰色

android - SimpleCursorAdapter 无法填充 TextView

android - 如何使用位置管理器但没有位置监听器获取 Android 当前位置 "only on demand"?

Android 5.0 许可证检查始终返回 NOT_LICENSED

android - 如何检查在 Android Lollipop 上授予 SYSTEM_ALERT_WINDOW 权限?

android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)

存储带引号的字符串时 Android SharedPreferences 崩溃

java - Android双数字格式化问题

android - 如何在 google play store 的单个轨道中提供 2 个版本?