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

时间:2017-03-13 10:43:21

标签: android localization sharedpreferences android-context

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

@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));
}

如果无法做到这一点,是否有任何想法如何设置用户从设置中选择的应用程序语言?

1 个答案:

答案 0 :(得分:5)

这对我有用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(newBase);

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