从睡眠中唤醒时Android应用程序更改语言

时间:2013-02-20 22:45:24

标签: android

我的问题,我的申请。我正在为用户提供更改语言的选项。使用以下代码可以很好地使用:

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) 我该如何解决这个问题?

1 个答案:

答案 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。对不起我的英文,我希望这就是你想要的