在所有 android 个应用中格式化数字

Format numbers in all android app

我正在使用一个有两种语言的应用程序,法语和阿拉伯语,为了做到这一点,我使用了这个代码:

        Locale locale = new Locale("ar" or "fr");
        Locale.setDefault(locale);
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());

但问题是它要用法语显示数字,我在这里发现我需要使用这些命令:

        NumberFormat nf=NumberFormat.getInstance(new Locale("fr","FR"));
        nf.format(i);

但它一次只适用于一个字符串,我需要找到另一个命令才能在所有应用程序中使用它,所以我可以一步将数字设置为法语

要在不同的语言环境中格式化数字,您可以在应用程序上下文中定义 NumberFormat ovject,并从那里使用它:

如果您的应用已经定义了一个 Application 对象,您必须将此代码添加到该 class,否则您将创建一个从 Application 扩展的新 class。这是因为您的应用程序中只有一个 Application 实例。

另外请记住,应用程序 class 必须在清单中声明。

public class MyApplication extends Application{

    private NumberFormat nf = NumberFormat.getInstance(new Locale("fr","FR"));

    public NumberFormat getNumberFormat(){
        return nf;
    }

    public String getFormattedNmbr(double i){
        return nf.format(i);
    }

    // add here getFormattedNmbr with different argument types
}

清单中:

<application
        ...
        android:name="com.you.yourapp.MyApplication">
        ...
</Application>

在您的活动中:

getApplication().getNumberFormat().format(number);

//or

getApplication().getFormattedNbr(32.45);