我正在试验 Dagger 2 中的“新”Android 支持。
我想在 Dagger 中设置以下架构:
应用程序 => 活动 => 控制器(导体)
(控制器基本上是View由系统实例化的。你可以把它想象成Fragments 但没有 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的.
我怎样才能做到这一点?ActivityController
@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上找到。
谢谢。