在onCreate方法之前从Activity获取Intent Extras

时间:2017-05-11 14:34:08

标签: android android-intent

有没有办法在attachBaseContext()方法中获得意图附加内容?

我正在使用的Activity在框架项目中。我需要使用attachBaseContext()方法设置Activity的语言,如:

@Override
protected void attachBaseContext(Context newBase) {
   super.attachBaseContext(LanguageContextWrapper.wrap(newBase, "en"));
}

我正在使用intent.putExtra()向Activity发送语言代码字符串。当我尝试在attachBaseContext()内获取额外内容时,它会抛出NullPointerException错误。怎么做到呢?感谢。

1 个答案:

答案 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的存储库模式。