2017-07-06 18 views
-3

私はアプリの4つの言語を作成しました。私はLauaguageを変更することができますが、アプリを終了してからもう一度起動すると、アプリは最初にデフォルトのstring.xmlで開始されます。アプリは最初にデフォルト言語で始める必要がありますか?

最後に選択した言語でアプリを起動させる方法を教えてください。

私はmainActivityでOnCreateメソッドを呼び出す必要がありますか?

 @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 
    */ 
    } 

ユーザーはどのようにデフォルト言語を変更できますか?

答えて

1

選択した言語を共有設定に保存しないのはなぜですか?これにより、アプリの起動時にいつでも選択した言語を確認し、適切な言語ファイルを読み込むことができます。

+0

はい、私はあまりにも共有優先して文字列としてエン、ドイツ、フランス、などの選択した言語のシンボル...と旗のイメージパスを保存する、ということでした。問題を解決するには、threアプリの再起動後に毎回言語を選択する必要があります。私はここで何かsimulareを見つけたが、うまくいかなかった:[link](https://stackoverflow.com/questions/12908289/how-to-change-language-of-app-when-user-selects-language) – Biblio

+0

あなた'onCreate'、' onResume'などのアクティビティライフサイクル関数を利用してファイルをロードする必要があります。選択した言語をどの時点でチェックしますか? – Mohale

+0

@Biblio '...共有設定の文字列としてのフラグの画像パス...' **間違った**。ローカライズされた 'drawable'フォルダもあります。正しいフラグ画像へのパスを保存するような素朴なことをする必要はありません。 –

0

私は以下のように長い道を使いましたが、それは機能します。ありがとう:

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(); 
} 
関連する問題