有什么方法可以在attachBaseContext()
方法中获得意向附加吗?
我正在使用的活动在框架项目中。我需要使用attachBaseContext()
方法设置Activity的语言,例如:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(LanguageContextWrapper.wrap(newBase, "en"));
}
我正在使用
intent.putExtra()
将语言代码字符串发送到Activity。当我尝试在attachBaseContext()
中获取更多内容时,它将引发NullPointerException错误。怎么做到呢?谢谢。 最佳答案
TL; DR-据我所知,这是不可能的。
这是因为Android会在附加attachBaseContext
后立即调用Activity
,如here所示。稍后,将意图设置在Activity
类中。
另一种解决方案是将变量存储在您的Application
子类中或某种类型的应用程序范围的存储库中。
例如,@Overrideprotected void attachBaseContext(Context newBase) { String someLanguage = ((MyApplication)newBase.getApplicationContext()).getAppLanguage(); super.attachBaseContext(LanguageContextWrapper.wrap(newBase, someLanguage));}
您可以轻松地对此进行调整,以使用带有Dagger甚至SharedPreferences的存储库模式。