我正在使用此功能通过编程方式将语言从英语更改为阿拉伯语:
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吗?
答案 0 :(得分:0)
每当您通过onCreate()和其他一些系统调用时,配置都会被覆盖。因此,您需要将语言环境保存在SharedPreferences中,并在每个活动的每个onCreate()方法中进行设置。
有关可能的方法,请参见此处: Change app language programmatically in Android