android - 基于区域设置的数字格式

时间:2011-09-26 14:46:34

标签: locale number-formatting

成为android的新手我有一些代码组合如下,目的是根据自定义区域设置不同地显示特定数字12345.66。然而,它只是崩溃我的测试应用程序,我无法弄清楚为什么...在这里感谢一些帮助。非常感谢提前!

//get current locale and display number
Configuration sysConfig = getResources().getConfiguration();
Locale curLocale = sysConfig.locale;
String aNumber = "12345.66";
NumberFormat nf = NumberFormat.getInstance(curLocale);
aNumber = nf.format(aNumber);
numberText.setText(R.string.numberText + aNumber);

Layout.xml:

<TextView 
    android:layout_width="fill_parent"
android:layout_height="wrap_content"   
    android:id="@+id/nbumberText"
/>

3 个答案:

答案 0 :(得分:7)

根据Android / Java文档,您可以使用 java.text.NumberFormat

NumberFormat.getInstance()格式(mynumber的);

这将使用当前用户的区域设置。

有关http://developer.android.com/reference/java/text/NumberFormat.html

的更多信息

答案 1 :(得分:0)

这句话非常可疑:

numberText.setText(R.string.numberText + aNumber);

你是什么意思?这是一个错字吗?

要显示格式化的数字,您可能只需要:

numberText.setText(aNumber的);

顺便说一下,我猜你没有使用调试器。一个认真的开发者肯定需要这个。

答案 2 :(得分:0)

它崩溃是因为 * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: hsl(257, 40%, 49%); font-family: 'Poppins', sans-serif; color: #fff; overflow: hidden; } h2 { font-family: 'Open Sans', sans-serif; font-size: 1.2rem; } .bg-img { height: 100vh; background-image: url(./images/bg-desktop.svg); background-repeat: no-repeat; background-position: center; background-size: cover; padding: 4%; } .logo { margin-bottom: 50px; } .container { margin-left: 0; margin-right: 0; } .illu-img { width: 101%; } 接受了NumberFormat.format()Double而不是Long。所以:

String

应该是:

aNumber = nf.format(aNumber);