首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >由于区域设置的原因,android货币代码不正确

由于区域设置的原因,android货币代码不正确
EN

Stack Overflow用户
提问于 2015-04-08 21:39:23
回答 1查看 376关注 0票数 2

我的应用程序在spinner中有一个语言更改选项,使用的语言如下1.英语2.意大利语3.简体中文4.繁体中文

我已经加载了相应的values文件夹中的所有语言字符串。但是,当我尝试加载繁体中文时,我只能获得简体中文文本。

在谷歌上搜索了一下之后,我试着根据语言环境加载语言。

以下是我的微调器选择和操作代码

代码语言:javascript
代码运行次数:0
运行
复制
        langSpinner = (Spinner)this.findViewById(R.id.lanuage_spinner1);
        langSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
        {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long arg3) 
            {   
                if (pos == 0) 
                {
                    langSelected ="en";
                    locale = Locale.ENGLISH;
                }
                else if (pos == 1) 
                {
                    langSelected ="it";
                    locale = Locale.ITALIAN;
                } 
                else if (pos == 2) 
                {
                    langSelected ="zh";
                    locale = Locale.SIMPLIFIED_CHINESE;
                }               
                else if (pos == 3)
                {
                    langSelected ="zh-rTW";
                    locale = Locale.TRADITIONAL_CHINESE;
                }

                changeLang(langSelected, pos);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }   
        });


public void changeLang(String lang, int pos)
    {
        if (lang.length() != 0)
        {
            //locale = new Locale(lang);            
            android.content.res.Configuration config = new android.content.res.Configuration();
            config.locale = locale;
            Locale.setDefault(locale);
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());


       // here using intent call the same activity again

        }
    }

现在我的问题出在我用来显示货币值"$“的下一个活动中,从我的后端服务器中,我用来获取美元的货币代码,并通过在下面的代码中解析它来显示"$”。

代码语言:javascript
代码运行次数:0
运行
复制
public static Currency parseCurrencyCode(String currencyCode) {
        if (currencyCode.equals("RMB")) {
            return Currency.getInstance("CNY");
        }
        try {
            return Currency.getInstance(currencyCode);
        } catch (IllegalArgumentException e) {
            Log.e(TAG, "Unknown Currency " + currencyCode);
        }
    }

添加上述用于加载繁体中文字符串的区域设置后,我得不到"$“值。

代码语言:javascript
代码运行次数:0
运行
复制
If selected language is English, currency will be as USD
If selected language is Italy, currency will be as USD
If selected language is Simplified Chinese, currency will be as US$
If selected language is Traditional Chinese, currency will be as $

为什么会发生这种情况?

我已经通过this,说由于语言环境的原因,一些货币的使用出现在上面的解释中。如何克服这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-04-09 17:59:24

通过使用以下方法,我能够获得货币代码

代码语言:javascript
代码运行次数:0
运行
复制
String currencyCode = "USD";
Currency currency = Currency.getInstance(currencyCode);
NumberFormat format = NumberFormat.getCurrencyInstance();
format.setMaximumFractionDigits(digits);        
String symbol = currency.getSymbol(Locale.US);

DecimalFormatSymbols decimalFormatSymbols = ((java.text.DecimalFormat) format).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol(symbol);
((java.text.DecimalFormat) format).setDecimalFormatSymbols(decimalFormatSymbols);

return format.format(value);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29516308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档