我一直想知道為什么我的 onCreate 方法運行兩次,現在發現它與我在啟動時設置應用程序的語言環境有關...我的問題是,它是否有必要運行兩次或不是?這是使 onCreate 運行兩次的代碼: /*Sets the language of the application and also returns the integer value of selected language*/protected Integer setLanguage() { String lang = prefs.getString("language-key","0"); Integer language = Integer.parseInt(lang); Configuration config = context.getResources().getConfiguration(); if (!decideLang(language).equals("") && !config.locale.getLanguage().equals(decideLang(language))) { setLocale(decideLang(language)); } return language;}/*Sets the locale*/private void setLocale(String lang) { ((Activity) context).recreate(); Locale myLocale = new Locale(lang); Resources res = context.getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm);}setLanguage 方法返回的整數稍后用于確定在稍后階段要使用的 URL,但我已經意識到這對我的問題并不重要。我的問題是,為什么 onCreate 需要因為這段代碼運行兩次?
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
((Activity) context).recreate();
,正如它在罐子上所說的那樣,重新創建了 Activity,所以 onCreate() 當然會被調用兩次。
添加回答
舉報
0/150
提交
取消