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

Ali*_*aca 3 android localization android-context sharedpreferences

我的目标是在创建上下文之前重写应用程序语言,并且我将使用该上下文来调用其他活动.它可以通过在"onCreate"上对"重新创建()"方法进行校对,但我不想重新创建活动以实现该目标.例如

@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));
}
Run Code Online (Sandbox Code Playgroud)

如果这不可能,那么如何设置用户从设置中选择的应用程序语言?

小智 5

这对我有用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(newBase);
Run Code Online (Sandbox Code Playgroud)

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