Je l'ai trouvé vraiment bizarre bug qui est reproduit uniquement sur Android N appareils.
Au tour de mon application, il est possible de changer la langue. Voici le code qui change.
public void update(Locale locale) {
Locale.setDefault(locale);
Configuration configuration = res.getConfiguration();
if (BuildUtils.isAtLeast24Api()) {
LocaleList localeList = new LocaleList(locale);
LocaleList.setDefault(localeList);
configuration.setLocales(localeList);
configuration.setLocale(locale);
} else if (BuildUtils.isAtLeast17Api()){
configuration.setLocale(locale);
} else {
configuration.locale = locale;
}
res.updateConfiguration(configuration, res.getDisplayMetrics());
}
Ce code fonctionne très bien dans l'activité de mon tour ( avec recreate()
appel), mais dans toutes les prochaines activités de toutes les ressources de Chaîne sont mauvais. La rotation de l'écran fixe. Que puis-je faire avec ce problème? Dois-je changer les paramètres régionaux pour Android N différemment ou c'est juste le système de bug?
P. S. Voici ce que j'ai trouvé. Lors du premier démarrage de MainActivity (ce qui est après ma tournée) Locale.getDefault()
est correct, mais les ressources sont mauvais. Mais dans d'autres activités, il me donne mal de paramètres Régionaux et le mal les ressources de ce lieu. Après la rotation de l'écran (ou peut-être quelques autres changement de configuration) Locale.getDefault()
est correct.