我的问题,我的申请。我正在为用户提供更改语言的选项。使用以下代码可以很好地使用:
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);
}
一切都很好,除非是锁定手机,或者手机进入睡眠状态,然后醒来。此时应用程序使用DEFAULT字符串值(值-EN) 我该如何解决这个问题?
答案 0 :(得分:0)
两个要素: - 为什么方法中的参数“View view” - 如果要保存所选语言,可以将其保存在某处。比如“SharedPreference”:
添加保存方法:
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();
}
添加get方法:
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());
在此代码中“this”是Activity或Context。对不起我的英文,我希望这就是你想要的