2017-07-06 3 views
-3

J'ai créé 4 langues pour l'application. Je peux changer le Lauaguage, d'accord, mais si vous fermez l'application et que vous recommencez, l'application démarre d'abord avec le fichier string.xml par défaut. Comment laisser l'application démarrer avec la dernière langue sélectionnée?L'application devrait-elle commencer par utiliser la langue par défaut?

dois-je appeler la méthode par OnCreate dans le mainActivity?

 @SuppressWarnings("deprecation") 
    public void setLocale(String lang) { 
     Locale myLocale = new Locale(lang); 

     DisplayMetrics dm = getResources().getDisplayMetrics(); 
     Configuration conf = getResources().getConfiguration(); 
     conf.locale = myLocale; 
     getResources().updateConfiguration(conf, dm); 
     Intent refresh = new Intent(this, Languages.class); 
     startActivity(refresh); 
     /*   "en" = English 
      "hi" =Hindi 
      "fr" =French 
      "it" =Italian 
      "de" =German 
      "es" =Spanish 
      "ja" =Japanese 
      "ko" =Korean 
      "nl" =Dutch 
      "pt" =Portuguese 
      "ru" =Russian 
      "zh" =Chinese 
      "ar" = arabic 
    */ 
    } 

Comment l'utilisateur peut changer la langue par défaut? Pourquoi ne stockez-vous pas la langue sélectionnée dans les préférences partagées?

Répondre

1

Pourquoi? De cette façon, vous pouvez toujours vérifier la langue sélectionnée au démarrage de votre application, puis charger le fichier de langue approprié.

+0

Oui je l'ai fait, je sauve le symbole de la langue choisie comme En, De, Fr, ... et le chemin image du drapeau en tant que chaîne de préférence partagée aussi. Malgré le problème, je dois sélectionner la langue à chaque fois après le redémarrage de l'application. J'ai trouvé quelque chose ici simulare mais n'a pas fonctionné: [link] (https://stackoverflow.com/questions/12908289/how-to-change-language-of-app-when-user-selects-language) – Biblio

+0

Vous peut avoir à utiliser l'avantage de fonctions de cycle de vie d'activité comme 'onCreate',' onResume' et d'autres pour charger le fichier. À quel moment vérifiez-vous la langue sélectionnée? – Mohale

+0

@Biblio '... et le chemin de l'image du drapeau sous forme de chaîne dans la préférence partagée ...' ** WRONG **. Vous pouvez également avoir des dossiers 'drawable' localisés. Pas besoin de faire des choses naïves comme stocker le chemin vers l'image du drapeau correct. –

0

J'ai utilisé un long chemin comme ci-dessous, mais cela fonctionne. Merci:

onResume:

selected_lang= myshared.getString("selected_lang","de"); 
    lang_found= Integer.parseInt(myshared.getString("lang_found","0")); 
setLocale(selected_lang); 



@SuppressWarnings("deprecation") 
public void setLocale(String lang) { 
    Locale myLocale = new Locale(lang);  
    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    Configuration conf = getResources().getConfiguration(); 
    conf.locale = myLocale; 
    getResources().updateConfiguration(conf, dm); 

    if(lang_found==0) {  
     Intent refresh = new Intent(this, MainActivity.class); 
     startActivity(refresh); 
     lang_found=1;  
    } 

@Override 
protected void onDestroy() { 

    lang_found=0; 
    Save_setting(); 
    super.onDestroy(); 
}