应用程序区域设置的更改不会在android中完全生效



我正在用英语和印尼语两种语言申请。为此,我在res文件夹中创建了两个字符串文件(值en和值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);
    }

但在把语言改成印尼语后,奇怪的事情发生了。我的一些文字改成了印尼语,一些改成了英语。

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

提交btn-英文是SUBMIT,印尼是KIRIM

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

和上传接收btn-英文是Upload Receipt,印尼是Upload Penerimaan

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

但在印尼向Kirim提交btn文本通道但上传回执btn保持"上传回执"。它不会更改为Upload Penerimaan。

当其他文本根据区域设置而变化时,这是如何发生的。此外,我在所有弹出对话框中都面临同样的问题。所有对话框中的文本都保持为英语。

该怎么办?

按照其他答案的建议尝试重新启动您的活动,查看Ben的答案我如何重新启动Android活动

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

最新更新