我正在使用此函数以编程方式将语言从英语更改为阿拉伯语:
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 中,并在每个 Activity 的每个 onCreate() 方法中进行设置。
请参阅此处了解可能的方法: Change app language programmatically in Android
关于java - Locale.getLanguage() 刷新 UI 后未更新(语言更改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974899/