Locale.getLanguage() 刷新 UI 后未更新(语言更改)



我使用此函数以编程方式将语言从英语更改为阿拉伯语:

private void setLocale(String lang) {
        Locale myLocale = new Locale(lang);
        Resources res = getContext().getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        conf.setLocale(new Locale(lang));
        Locale.setDefault(myLocale);
        res.updateConfiguration(conf, dm);
        Intent refresh = new Intent(getContext(), MainActivity.class);
        getActivity().finish();
        startActivity(refresh);
    }

语言正在发生变化,但是在使用时 Locale.getDefault().getLanguage();Resources.getSystem().getConfiguration().locale.getLanguage();尽管显示的语言是阿拉伯语,但我仍然得到英语 ( en ( 而不是预期值 ar。知道为什么它仍然返回 en?

每当您通过 onCreate(( 和系统的其他一些调用时,配置都会被覆盖。因此,您需要将语言环境保存在 SharedPreferences 中,并在每个活动的每个 onCreate(( 方法中设置它。

有关可能的方法,请参阅此处:在安卓中以编程方式更改应用语言

最新更新