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());
在本代码中,“这”是活动或上下文。对不起我的英语,我希望这是你想要的