为了账号安全,请及时绑定邮箱和手机立即绑定

onCreate 运行了两次,因为我在应用程序启动时设置了语言环境?

onCreate 运行了两次,因为我在应用程序启动时设置了语言环境?

Helenr 2021-09-03 17:33:21
我一直想知道为什么我的 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() 当然会被调用两次。



查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 263 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信