2017-05-23 33 views
0

我已经开始使用Dagger 2并面临奇怪的问题。 我有4个模块,其中3个在ApplicationComponent中,另​​一个有不同的Scope(UsersScope)。Kotlin Dagger 2无法提供交互者

问题与注射UsersInteractorUsersPresenter

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

这里是我的课

@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 

回答

2

没有UsersInteractor已知匕首,因为你只提供IUsersInteractor

切换您的主持人提供的方法来使用IUsersInteractor,它应该工作

fun provideUsersPresenter(usersInteractor: IUsersInteractor) 
相关问题