2016-11-04 9 views
0

locale Ändern unten programmatisch wieLokalisierung funktioniert nicht in Nougat Geräte

Locale locale = new Locale("es"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config, 
       getBaseContext().getResources().getDisplayMetrics()); 

     Resources.getSystem().updateConfiguration(config, null); 

Ist das nicht für Nougat-Geräte arbeiten, wird er automatisch auf Englisch, wenn wir von einer Aktivität zur anderen wechseln

+0

In anderen Geräten funktioniert es gut beim Wechsel von einer Aktivität zur anderen? – Piyush

+0

ja .. Es funktioniert gut .. nur die Nougat-Geräte ich konfrontiert dieses Problem – Vennila

+0

Ich hatte ähnliches Problem beim Start von Webview. Hier ist die Frage mit der vollständigen Lösung http://stackoverflow.com/questions/40486932/android-nougat-7-1-resets-locale-after-launching-webview –

Antwort

1

Nougat ist veraltet das config.locale. Verwenden Sie stattdessen setLocales().

Configuration config = activity.getBaseContext().getResources().getConfiguration(); 

Locale locale = Utils.stringToLocale(stringLanguage); 
Locale.setDefault(locale); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
     config.setLocales(new LocaleList(locale)); 
} else { 
     config.locale = locale; 
} 
activity.getBaseContext().getResources().updateConfiguration(config, 
      activity.getBaseContext().getResources().getDisplayMetrics()); 
Verwandte Themen