【发布时间】:2015-03-18 18:44:46
【问题描述】:
我不太清楚如何用匕首 2 解决这个问题。
假设我们有ApplicationModule 为我们提供ApplicationContext
然后我们有ApplicationComponent 只使用这个模块。
然后在它之上我们有ActivityModule 和ActivityComponent 依赖于ApplicationComponent。
ActivityComponent 的构建就像
ApplicationComponent component = ((MyApplication) getApplication()).getComponent();
mComponent = Dagger_ActivityComponent.builder()
.applicationComponent(component)
.activityModule(new ActivityModule(this))
.build();
然后我注入我的活动:
mComponent.inject(this);
现在我可以使用ActivityModule 中声明的所有内容,但是我无法访问ApplicationModule。
那么问题是如何实现呢?这样当我构建依赖于另一个组件的组件时,我仍然可以从第一个组件访问模块?
编辑
我想我已经找到了解决方案,在再次重看Devoxx talk by Jake 之后,我不得不错过这一点,无论我想从另一个组件模块中使用什么,我必须在该组件中提供,例如我想使用 Context from ApplicationModule 然后在 ApplicationComponent 里面我必须声明 Context provideContext(); 并且它将可用。很酷:)
【问题讨论】:
-
您介意张贴谈话的链接吗?谢谢
-
您应该发布您的编辑作为答案并选择它。顺便说一句,你有想过 Dagger 2 中的瞄准镜吗? stackoverflow.com/questions/28411352/…
-
我认为他们不再使用
Dagger_前缀了... -
可以,只是没有下划线 ->
DaggerActivityComponent