我正在试验 Dagger 2 中的“新”Android 支持。
我想在 Dagger 中设置以下架构:
应用程序 => 活动 => 控制器(导体)
(控制器基本上是View
由系统实例化的。你可以把它想象成Fragment
s 但没有 Dagger Injection 支持)
对于每个级别,我都定义了一个依赖项ApplicationDep
:ActivityDep
和ControllerDep
.
- 我
Controller
应该能够注入所有这些依赖项。 - 我
Activity
应该能够注入ApplicationDep
和ActivityDep
- 我
Application
应该只能注入ApplicationDep
除了我的Controller
.
我无法注入ActivityDep
.
public class MyController extends Controller {
@Inject
ApplicationDependency applicationDependency;
//@Inject
//ActivityDependency activityDependency; // can not be provided
@Inject
ControllerDependency controllerDependency;
@NonNull @Override protected View onCreateView(@NonNull LayoutInflater layoutInflater, @NonNull ViewGroup viewGroup) {
ConductorInjection.inject(this);
return layoutInflater.inflate(R.layout.controller_main, viewGroup, false);
}
}
目前我ControllerBindingModule
对我ApplicationComponent
的.
我怎样才能做到这一点?Activity
Controller
@Singleton
@Component(modules = {
ApplicationModule.class,
ActivityBindingModule.class,
AndroidSupportInjectionModule.class,
ConductorInjectionModule.class,
ControllerBindingModule.class
})
interface AppComponent extends AndroidInjector<App> {
@Component.Builder
abstract class Builder extends AndroidInjector.Builder<App> {}
}
完整的代码可以在Github上找到。
谢谢。