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