Android modifier et définissez les paramètres régionaux par défaut dans l'application
Je suis en train de travailler sur la mondialisation de l'application Android. J'ai pour fournir des options pour choisir les différents paramètres régionaux à partir de l'application. Je suis en utilisant le code suivant dans mon activité (HomeActivity) où j'fournir option pour modifier les paramètres régionaux
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());
Cela fonctionne bien tant qu'il n'y a pas de modifications de configuration comme la rotation de l'écran où la locale par défaut pour le système android niveau locale plutôt que sur les paramètres régionaux définis par le code.
Locale.setDefault(selectedLocale);
Une solution je pense est de persister à l'utilisateur paramètres régionaux sélectionnés à l'aide de SharedPreferences et dans chaque activité du onCreate() méthode les paramètres régionaux définis à l'persisté paramètres régionaux dans le onCreate() est appelée, encore et encore, chaque changement de configuration. Est-il une meilleure façon de le faire alors que je n'ai pas à le faire dans toutes les activités.
Fondamentalement, ce que je veux, c'est que - une Fois que j'ai modifier/définir certains paramètres régionaux dans mon HomeActivity, je veux toutes les activités au sein de mon application à utiliser que locale elle-même, indépendamment de tout changement de configuration....à moins que et jusqu'à ce qu'il soit changé pour d'autres paramètres régionaux à partir de l'app HomeActivity qui fournit des options permettant de modifier les paramètres régionaux.
OriginalL'auteur Xavier DSouza | 2014-03-14
Vous devez vous connecter pour publier un commentaire.
Même si la solution est indiqué dans cette réponse œuvres dans le cas général, j'ai trouvé moi-même en ajoutant à mes préférences de l'écran:
C'est parce que lorsque l'application est en mode paysage et les préférences de l'écran en mode portrait, changer les paramètres régionaux et de revenir à l'application peut causer des problèmes. Paramètre à la fois pour être en mode paysage empêcher que cela se produise.
Solution générale
Vous avez besoin de modifier les paramètres régionaux au niveau de l'Application, de sorte que ses effets sont partout.
Puis dans votre manifeste, vous devez écrire:
updateLanguage(this, "en");
c'est vrai? Ou essayez avecupdateLanguage(this, Locale.US.getDisplayLanguage());
Pas fonctionné pour moi.la chaîne "locale_override" doit être remplacé par ce que les clés de vos préférences pointe de la langue.
C'est une belle solution. MAIS malheureusement, il ne fonctionne que sur mon Galaxy S4 sous Android 4.4.2 quand je suis de débogage. Lors de l'exécution de la normale, il ne change pas la langue, mais produit beaucoup de sortie supplémentaire dans le LogCat. La solution est d'appeler la méthode statique updateLanguage( ctx ) dans la méthode onCreate de mon activité principale, et non pas dans le onCreate de l'application. Mais dans ce cas je n'ai pas besoin de dériver de la classe Application.
Notez que
updateConfiguration()
est obsolète. Des Alternatives sont proposées dans Définir les paramètres Régionaux par programmation.OriginalL'auteur Mikaël Mayer