Я действительно новичок в Dagger 2, я знаю, как он работает и что он делает, но у меня возникают некоторые проблемы при попытке внедрить его в мой проект.
Моя цель на данный момент - просто ввести докладчика в мою точку зрения, цель состоит в том, чтобы отделить мою точку зрения на
presenter = Presenter(myInteractor())
Это то, что я пробовал
MyAppApplication
class MyAppApplication: Application() {
lateinit var presentationComponent: PresentationComponent
override fun onCreate() {
super.onCreate()
createPresentationComponent()
}
private fun createPresentationComponent() {
presentationComponent = DaggerPresentationComponent.builder()
.presentationModule(PresentationModule(this))
.build()
}
}
PresentationComponent
@Component(modules = arrayOf(PresentationModule::class))
@Singleton
interface PresentationComponent {
fun inject(loginActivity: LoginView)
fun loginUserPresenter(): LoginPresenter
}
PresentationModule
@Module
class PresentationModule(application: Application) {
@Provides @Singleton fun provideLoginUserPresenter(signInInteractor: SignInInteractor): LoginPresenter {
return LoginPresenter(signInInteractor)
}
}
SignInInteractor
interface SignInInteractor {
interface SignInCallBack {
fun onSuccess()
fun onFailure(errormsg:String)
}
fun signInWithEmailAndPassword(email:String,password:String,listener:SignInCallBack)
fun firebaseAuthWithGoogle(account: GoogleSignInAccount, listener:SignInCallBack)
}
Теперь я подумал, что это все, что мне нужно, чтобы без проблем внедрить интерактор в презентатор, а затем внедрить презентера в моем поле зрения, но дает мне эту ошибку
error: [Dagger/MissingBinding] com.myapp.domain.interactor.logininteractor.SignInInteractor cannot be provided without an @Provides-annotated method.
Я немного сбит с толку, потому что если я просто предоставлю презентационный модуль, который отвечает за привязку моего signInInteractor к моему докладчику, он должен работать, но это не так.
Заранее спасибо за любую помощь