Reputation: 1
@HiltViewModel
class PrincipalViewModel @Inject constructor(private val repository: PrincipalRepository) :ViewModel()
there is my binds
@Module
@InstallIn(ViewModelComponent::class)
abstract class ActivityModule {
@Binds
abstract fun bindPrincipalRepoImpl(repoImpl : PrincipalRepositoryImpl) : PrincipalRepository
}
And the error is
/Users/X/AndroidStudioProjects/Corotuines/app/build/generated/source/kapt/debug/com/example/corotuines/application/ApplicationMain_HiltComponents.java:126: error: [Dagger/MissingBinding] com.example.corotuines.repository.PrincipalRepositoryImpl cannot be provided without an @Inject constructor or an @Provides-annotated method. public abstract static class SingletonC implements ApplicationMain_GeneratedInjector, ^ com.example.corotuines.repository.PrincipalRepositoryImpl is injected at com.example.corotuines.di.ActivityModule.bindPrincipalRepoImpl(repoImpl) com.example.corotuines.repository.PrincipalRepository is injected at com.example.corotuines.viewmodel.PrincipalViewModel(repository) com.example.corotuines.viewmodel.PrincipalViewModel is injected at com.example.corotuines.viewmodel.PrincipalViewModel_HiltModules.BindsModule.binds(vm) @dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.String,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [com.example.corotuines.application.ApplicationMain_HiltComponents.SingletonC → com.example.corotuines.application.ApplicationMain_HiltComponents.ActivityRetainedC → com.example.corotuines.application.ApplicationMain_HiltComponents.ViewModelC]
Upvotes: 0
Views: 397
Reputation: 1415
If PrincipalRepository is an interface,your code will work. otherwise you should use :
@Module
@InstallIn(ViewModelComponent::class)
object XYZModule {
// with Potential dependencies if exists
@Provides
fun providePrincipalRepo(dep1:DEP1,dep2:DEP2): PrincipalRepository {
return PrincipalRepositoryImpl(dep1,dep2);
}
}
Good luck
Upvotes: 0