tengo una actividad y en onCreate i cargar el lenguaje de las preferencias y establecer un escenario como éste:local androide cambia aleatoriamente a los valores predeterminados
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("locale", "en");
Locale newLocale = new Locale(lang);
Locale.setDefault(newLocale);
Configuration config = new Configuration();
config.locale = newLocale;
final Resources res = getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
yo también anulan onConfigurationChanged
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("locale", "en");
Locale newLocale = new Locale(lang);
Locale.setDefault(newLocale);
Configuration config = new Configuration();
config.locale = newLocale;
final Resources res = getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
tengo una ViewPager con FragmentPagerAdapter y tres pestañas en Android 2.3.7. el problema es que, a veces, al cambiar las pestañas, la configuración regional de la aplicación se revierte al inglés, por lo que a partir de ahora la interfaz de usuario tiene idiomas mixtos. Siempre creo nuevos fragmentos para las pestañas en el método getItem() del adaptador. si giro el dispositivo, la configuración regional vuelve a ser correcta.
También intenté poner android: configChanges = "locale" en manifiesto y no anulando enConfigurationChanged(), pero el resultado es el mismo.
Lo peor es que no es 100% reproducible, solo ocurre algunas veces y también tengo informes de usuarios sobre esto. una vez que se inicia la aplicación y no cambia la configuración regional después de cambiar algunas pestañas, entonces se aplicará correctamente hasta la salida.