2017-07-06 32 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

是的,我這樣做,我保存所選的語言符號像恩,德國,法國,...和標誌作爲共享偏好字符串的太像路徑。 Bave解決這個問題,我必須在每次重新啓動應用程序後選擇語言。我發現這裏有一些simulare,但沒有工作:[鏈接](https://stackoverflow.com/questions/12908289/how-to-change-language-of-app-when-user-selects-language) – Biblio

+0

你可能不得不利用諸如'onCreate','onResume'等的活動生命週期函數來加載文件。你在哪一點檢查選定的語言? – Mohale

+0

@Biblio'...和標誌的圖像路徑作爲字符串在共享偏好... ** **錯誤**。你也可以有本地化的可繪製文件夾。不需要做一些天真的事情,比如將路徑存儲到正確的標誌圖像。 –

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(); 
} 
相關問題