Android应用程序在从睡眠中醒来时更改语言
我的申请有问题。我给用户一个改变语言的选项。使用以下代码,效果非常好:Android应用程序在从睡眠中醒来时更改语言,android,Android,我的申请有问题。我给用户一个改变语言的选项。使用以下代码,效果非常好: public void jezik_slo(View view) { Locale locale = new Locale("SI_sl"); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; this.getApplicationCon
public void jezik_slo(View view)
{
Locale locale = new Locale("SI_sl");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
this.getApplicationContext().getResources().updateConfiguration(config, null);
}
public void jezik_ang(View view)
{
Locale locale = new Locale("en_US");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
this.getApplicationContext().getResources().updateConfiguration(config, null);
}
一切正常,除了锁定手机,或者手机进入睡眠状态,然后醒来。此时,应用程序使用默认字符串值(values-EN)
如何解决这个问题?两个要素:
-为什么在方法中有参数“View”
-如果要保存所选语言,可以将其保存在某个位置。如“SharedReference”中所述:
添加保存方法:
private static final String BASE_LANGUAGE = "base", KEY_LANGUAGE = "lang";
private void saveLanguage(String lang) {
SharedPreferences sp = this.getSharedPreferences(BASE_LANGUAGE, Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString(KEY_LANGUAGE, lang);
editor.commit();
}
添加获取方法:
private String getLanguage() {
SharedPreferences sp = this.getSharedPreferences(BASE_LANGUAGE, Context.MODE_PRIVATE);
return sp.getString(KEY_LANGUAGE, "en_US"); //en_US is default language
}
删除代码重复
public void jezik(String lang)
{
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
this.getApplicationContext().getResources().updateConfiguration(config, null);
saveLanguage(lang);
}
要加载语言,请在“onCreate”方法中尝试以下操作:
jezik(getLanguage());
在本代码中,“这”是活动或上下文。对不起我的英语,我希望这是你想要的