下面是活動,它仍然使用舊的DI模型,我試圖遷移到Dagger2(使用Dagger-android)。我想注入Presenter,正如你所看到的,一個依賴是'NewProjectDisplayer',它是活動中的自定義視圖。如何在Dagger2中提供視圖?
這是 'NewProjectDisplayer' 我想要提供給演示
我有一個模塊(的AppModule),其提供像ProjectService全局相關性,login服務等
下面是我遇到麻煩的NewProjectModule。與該活動相關的其中一個依賴是'NewProjectDisplayer'。我不知道我能提供給它..
@Module
public class NewProjectActivityModule {
@Provides
NewProjectDisplayer provideNewProjectDisplayer(View view) {
// ??? return view.findViewById(R.id.create_project_view);
}
@Provides
NewProjectNavigator provideNewProjectNavigator(BaseActivity baseActivity) {
return new AndroidNewProjectNavigator(baseActivity);
}
@Provides
NewProjectPresenter provideNewProjectPresenter(NewProjectDisplayer displayer, //
ProjectService projectService,
LoginService loginService,
UserService userService,
NewProjectNavigator navigator, //
PermissionHandler permissionHandler,//
CropImageHandler cropImageHandler,//
RxSchedulers schedulers) {
return new NewProjectPresenter(displayer, projectService, loginService,
userService, navigator, permissionHandler, cropImageHandler, schedulers);
}
}
我怎麼能提供這種「NewProjectDisplayer」,使演示者可以創建和注入?我正在使用匕首 - 機器人。
是啊,這很糟糕,我想我可以使活動實現相同的顯示器界面和委託給複合視圖,但這會創建非常醜陋的代碼。我認爲最簡單的事情就是用碎片替換所有視圖 – Linxy
您也可以在構造函數之外傳遞視圖的實例。許多人用'attach()'和'detach()'方法做這件事。 – mcassiano
是啊,使用'附加(NewProjectDisplayer顯示器)..'爲我工作,謝謝 – Linxy