2014-04-08 26 views
2

在我的應用程序中,我有一個微調選擇語言「en」或「ar」。我有兩種語言的String.xml
一旦我們從微調框中選擇語言,我希望我的佈局可以根據所選語言進行更改。自動刷新語言更改後佈局中的所有視圖

我嘗試這樣做,但是當我從微調選擇不改變:

Spinner languageSpinner=(Spinner) findViewById(R.id.languagespinner); 
      languageSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 

       if(arg2==0) 
        languageToLoad = "en"; // your language 
       else 
        languageToLoad = "ar"; 
       Locale locale = new Locale(languageToLoad); 
       Locale.setDefault(locale); 
       Configuration config = new Configuration(); 
       config.locale = locale; 
       getBaseContext().getResources().updateConfiguration(config, 
       getBaseContext().getResources().getDisplayMetrics()); 
       onConfigurationChanged(config); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 

我該怎麼辦呢?

+0

你需要重新啓動你的應用程序 –

+0

如何重新啓動? – Mario

+0

http://stackoverflow.com/questions/8049207/how-to-refresh-activity-after-changing-language-locale-inside-application –

回答

1

設置本地化後,您需要重新加載當前活動

finish(); 
startActivity(getIntent()); 

會重新載入您的活動。

您的活動電話
+0

因爲我每次都使用微調,所以我無限次完成並重新開始活動 – Mario

0

此功能重新啓動活動

private void restartActivity() { 
    Intent intent = getIntent(); 
    finish(); 
    startActivity(intent); 
} 
0

由於API級別> 11,你可以用

recreate() 

要重新創建(新實例)的活動。 看看documentation.