更改应用程序区域设置在android中没有完全生效?

时间:2013-07-03 07:42:41

标签: android setlocale

我正在用英语和印尼语两种语言申请。 为此我在res文件夹中创建了两个字符串文件(values-en和values-in)

在我的一个活动中,我选择语言并更改语言环境。我正在使用以下代码执行此操作 -

将语言ID传递给此方法 -

public void setLocale(String lang) {
        Locale myLocale = new Locale(lang);

        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
    }
但是在将语言改为印尼语之后发生了奇怪的事情。我的一些文本改为印尼语,有些改为英语。

例如 - 我在活动中有两个按钮(提交和上传收据)。

SUBMIT btn有 - 在英语中,它的文字是提交,而在印度尼西亚语则是KIRIM

<string name="submit_btn_text">Submit</string>  for english
<string name="submit_btn_text">Kirim</string>   for indonesian

和UPLOAD RECEIPT btn有 - 在英文中,它的文字是上传收据,在印尼语中是上传Penerimaan

<string name="upload_receipt">Upload Receipt</string>  for english
<string name="upload_receipt">Upload Penerimaan</string>   for indonesian

但是在印度尼西亚语中 将btn文本chanes提交给 Kirim 但上传收据btn仍然是“上传收据”。它不会改为上传Penerimaan。

这是如何发生的,因为其他文本按照区域设置进行调整。 此外,我在弹出的所有对话框中都面临同样的问题。在所有对话框中,文本仍然保留为英文。

应该做什么?

1 个答案:

答案 0 :(得分:0)

尝试按照其他答案的建议重新启动您的活动,请查看Ben的回答How do I restart an Android Activity

public void reload() {
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();

    overridePendingTransition(0, 0);
    startActivity(intent);  
}