Android旋轉螢幕後國際化語言失效的解決辦法
本文已同步至個人部落格:liyuyu.cn
最近在項目中使用到了國際化多語言(英文+中文),但在使用時發現了一個問題,當旋轉螢幕後,APP語言(中文)自動轉換為了系統語言(英文),設定了Activity的android:configChanges="orientation|screenSize"屬性也無效,於是求助Stackoverflow,你懂的,最後問題解決了,於是整理了此文以作參考。
1.建立FunctionApplication類繼承Application,覆寫onConfigurationChanged,代碼如下:
public class FunctionApplication extends Application{ @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); toChinese(); } public void toChinese() { String languageToLoad = "zh"; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = getResources().getConfiguration(); DisplayMetrics metrics = getResources().getDisplayMetrics(); config.locale = Locale.SIMPLIFIED_CHINESE; getResources().updateConfiguration(config, metrics); }}2.修改AndroidManifest.xml檔案,application節點指定為我們自訂的FunctionApplication
至此,旋轉螢幕後語言失效的問題就可解決了。查閱了相關資料,發現在旋轉螢幕時觸發onConfigurationChanged(Configuration newConfig)方法時,這個newConfig取的是系統的,這就是為什麼語言會切換到系統語言的原因,所以在這裡我們再次設定下locale就可以了。