【发布时间】:2018-11-15 22:23:48
【问题描述】:
我需要在我的活动的attachBaseContext 中访问我的SharedPreferences 实例(这样我就可以在那里设置语言环境),但是注入的SharedPreferences 实例在那里不可用,因为注入发生在@987654325 @ 方法,在 attachBaseContext 调用之后运行。我正在使用 dagger2 进行依赖注入。
知道如何避免创建新的SharedPreferences 实例吗?
编辑:
好的,所以我认为问题是我尝试使用匕首太多,我认为在这种情况下它根本不适合。在每个活动的attachBaseContext 中,我必须更新语言环境,我将这个更新逻辑提取到LocaleManager,它需要访问SharedPreferences 实例和Context,我在attachBaseContext 中获得了Context。 SharedPreferences 实例已经在 AppModule 中,但我仍然无法将 @Inject 它添加到 attachBaseContext 调用之前的活动中,因为活动的注入发生在 attachBaseContext 之后。
【问题讨论】:
-
你为什么不尝试在类扩展应用程序中启动 dagger2 组件?比在活动中?
-
是的,我想不出任何其他解决方案,我会尝试,谢谢!
-
嗨,你能帮我的朋友解决同样的问题吗,请检查一下链接stackoverflow.com/q/53277662/3946958
-
我最终手动创建了 SharedPreferences 实例,没有匕首 @LeoDroidcoder
-
是的,这里也一样。似乎这是唯一的方法