我正在使用以下方法通过将语言代码作为字符串传递来更改应用程序的语言 当我更改屏幕方向时,语言将恢复为默认语言,并且所有视图也会重置。
public String 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);
Intent refresh = new Intent(this, Login.class);
startActivity(refresh);
finish();
return lang;
}
我尝试使用onSaveInstanceState
和onRestoreInstanceState
,但我不知道如何让所有这些方法协同工作。
答案 0 :(得分:0)
使用共享首选项,您可以存储语言并在屏幕方向更改时获取存储值。
public String 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);
Intent refresh = new Intent(this, Login.class);
startActivity(refresh);
finish();
// save shared preference here or later, your choice.
return lang;
}
创建和保存共享偏好的代码。
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor nameEditor = preferences.edit();
nameEditor.putString("saved_lang", lang);
nameEditor.commit();
检索共享偏好值的代码。
//To get language when screen changes.
String lang = preferences.getString("saved_lang", "");