0

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

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

4

1 回答 1

0

两个元素: - 为什么在方法中有参数“查看视图” - 如果要保存所选语言,可以将其保存在某处。就像在“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();
}

添加获取方法:

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

于 2013-02-20T23:57:49.923 回答