【发布时间】:2020-06-14 18:17:36
【问题描述】:
我正在尝试在导航抽屉列表中单击语言名称时以编程方式更改应用程序语言。语言发生了变化,但当应用程序关闭时我无法维护。
这是我的setLocal 方法
private void setLocale(String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
SharedPreferences.Editor editor = getSharedPreferences(SHARED_PREFS,MODE_PRIVATE).edit();
editor.putString(MY_LANG,lang);
editor.apply();
}
当我想像这样更改语言时,我会调用此方法
if (id == R.id.ar_lang){
setLocale("ar");
recreate();
}
if (id == R.id.eng_lang){
setLocale("en");
recreate();
}
我在 onCreate 中调用这个方法来获取存储的语言,但是它不起作用。
public void loadLocale(){
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS, Activity.MODE_PRIVATE);
String languages = prefs.getString(MY_LANG,"");
setLocale(languages);
}
【问题讨论】:
标签: java android sharedpreferences