Android ändern und standardmäßig gesetztes Gebietsschema innerhalb der app
Arbeite ich an Globalisierung der Android-app. Ich habe, um Optionen zu wählen, verschiedene Sprachen innerhalb der app. Ich bin mit dem folgenden code in meiner Tätigkeit (HomeActivity), wo ich die option zum ändern des Gebietsschemas
Configuration config = new Configuration();
config.locale = selectedLocale; //set accordingly
//eg. if Hindi then selectedLocale = new Locale("hi");
Locale.setDefault(selectedLocale); //has no effect
Resources res = getApplicationContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
Dies funktioniert gut, solange gibt es keine änderungen in der Konfiguration wie Bildschirm-rotation, wo das Gebietsschema standardmäßig auf den android-system-Ebene locale anstatt die locale-Einstellung durch den code.
Locale.setDefault(selectedLocale);
Einer Lösung, die ich denken kann, ist die Persistenz der vom Benutzer ausgewählte Gebietsschema mit SharedPreferences und in jeder activity onCreate () - Methode haben die locale setzen, um der permanenten Lokalisierung der onCreate() wird aufgerufen, wieder und wieder für jede Konfiguration zu ändern. Gibt es einen besseren Weg, dies zu tun, so dass ich don ' T haben, es zu tun, die in jeder Aktivität.
Im Grunde, was ich will, ist, dass - Sobald ich ändern/einstellen, um einige locale in meinem HomeActivity ich möchte, dass alle Aktivitäten innerhalb meiner app zu verwenden, die locale selbst, unabhängig von änderungen an der Konfiguration vornehmen....es sei denn, und bis Sie geändert werden, um andere locale aus dem app-HomeActivity, bietet Optionen für Gebietsschema ändern.
InformationsquelleAutor der Frage Xavier DSouza | 2014-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl die Lösung angegeben, die in dieser Antwort funktioniert im Allgemeinen Fall, ich fand mich hinzufügen, meine Präferenz Bildschirm:
Dies ist, weil, wenn die Anwendung im landscape-Modus und der Einstellung Bildschirm im portrait-Modus, ändern Sie das Gebietsschema und die Anwendung könnte Schwierigkeiten verursachen. Einstellung sowohl in landscape-Modus, die das verhindern.
Allgemeine Lösung
Müssen Sie ändern Sie das Gebietsschema auf der Anwendungsebene, so dass Ihre Auswirkungen sind überall.
Dann in Ihrem manifest schreiben Sie:
InformationsquelleAutor der Antwort Mikaël Mayer