I would like the application language to be set according to the user preferences but up till now it doesn't work how I would like it to.
I have set the default values: strings.xml and also values-es with a strings.xml inside in spanish. I have a menu option which brings the user to a Preference activity where he can amon gother things chose the language.
So here are some extracts of the code:
public class Preference extends PreferenceActivity implements OnSharedPreferenceChangeListener { ...... // Set up a listener whenever a key changes getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); ...} //(......) //and here I have the listener so when the language pref changes value the locale gets changed. @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("listPref2")) { String idioma = sharedPreferences.getString("listPref2", "catala"); if ("castella".equals(idioma)) { idioma = "es_ES"; Locale locale = new Locale(idioma); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } } } So when I change the language it works but then when I come back later or restart the emulator the language gets back to default locale the en_US and the app language gets changed back to default again. What can I do to sort that out?
I know I can get this preference (which I can access to from all my activities) and then each time set up the locale but I find it a bit heavy isn't there a way to do it in a more elegant way?
What I would like to do is if the user sets up the language so when he comes back 2 days later he doesn't have to change the language again.
Any ideas?