onCreate запускается дважды, потому что я установил локаль при запуске приложения? - PullRequest
0 голосов
/ 07 сентября 2018

Некоторое время я задавался вопросом, почему мой метод 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 Ответ

0 голосов
/ 07 сентября 2018

((Activity) context).recreate();, как указано в олове, воссоздает Activity, поэтому onCreate (), конечно, будет вызываться дважды.

(из комментариев )

...