2017-05-23 1 views
0

J'ai commencé à utiliser Dagger 2 et j'ai fait face à un problème étrange. J'ai 4 modules, dont 3 dans ApplicationComponent et l'autre a Scope (UsersScope).Kotlin Dagger 2 ne peut pas fournir d'interacteur

problème avec l'injection UsersInteractor dans UsersPresenter

Error:[BlankFragment)] com.interactors.UsersInteractor cannot be provided without an @Inject constructor or from an @Provides-annotated method.

Voici mes cours

@Singleton 
@Component(modules = arrayOf(ApplicationModule::class, NetworkModule::class, DbModule::class)) 
interface ApplicationComponent { 
    fun plusUsersComponent(usersModule: UsersModule): UsersComponent 
} 


@Module 
class ApplicationModule(private val context: Context) { 
@Provides 
@Singleton 
    fun provideContext(): Context = context 
} 

@Subcomponent(modules = arrayOf(UsersModule::class)) 
@UsersScope 
interface UsersComponent { 
    fun inject(blankFragment: BlankFragment) 
} 

@Module 
class UsersModule { 

@Provides 
@UsersScope 
fun provideUsersRepository(restService: RestService, dbService: DbService): IUsersRepository = 
    UsersRepository(restService, dbService) 

@Provides 
@UsersScope 
fun provideUsersInteractor(usersRepository: UsersRepository): IUsersInteractor = 
    UsersInteractor(usersRepository) 

@Provides 
@UsersScope 
fun provideUsersPresenter(usersInteractor: UsersInteractor): IUsersPresenter = 
    UsersPresenter(usersInteractor) 
} 

@Scope 
@Retention(AnnotationRetention.RUNTIME) 
annotation class UsersScope 

Répondre

2

Il n'y a pas UsersInteractor connu Dagger depuis que vous fournissez ne IUsersInteractor.

Changer votre méthode de fournisseur de présentateur à utiliser IUsersInteractor et il devrait fonctionner

fun provideUsersPresenter(usersInteractor: IUsersInteractor)