如何在调用 attachBaseContext 之前获取 sharedPreferences 键值?

How to get a sharedPreferences key value before attachBaseContext called?

我的目标是在创建上下文之前覆盖应用程序语言,我将使用该上下文调用其他活动。可以通过 "onCreate" 上的 colling "recreate()" 方法实现,但我不想重新创建 activity 来实现该目标。例如

@Override
protected void attachBaseContext(Context newBase) {

    //null exception here
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    String langKey = getString(R.string.pref_language_key);
    String langValue = sharedPreferences.getString(langKey, null);

    super.attachBaseContext(ConfigurationUtil.wrapLanguage(newBase, langValue));
}

如果这不可能,有什么想法可以设置用户从设置中选择的应用程序语言吗?

这对我有用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(newBase);

请使用 newBase 上下文,而不是您的 Activity 上下文