2017-07-06 33 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(); 
} 
相关问题