Reputation: 1146
I have a list of enum that I need to inject to view model via constructor but dagger fails with this error
SelectDisabilityComponent.java:7: error: [Dagger/MissingBinding] java.util.List<? extends x.x.results.Disability> cannot be provided without an @Provides-annotated method.
This is the module
@Module
abstract class SelectDisabilityModule {
@Binds
abstract fun bindViewModelFactory(impl: SelectDisabilityViewModel.Factory): ViewModelProvider.Factory
@Module
companion object {
@JvmStatic
@Provides
fun provideViewModel(fragment: SelectDisabilityFragment, factory: ViewModelProvider.Factory): SelectDisabilityViewModel {
return ViewModelProvider(fragment, factory).get(SelectDisabilityViewModel::class.java)
}
@JvmStatic
@Provides
fun provideDisabilities(fragment: SelectDisabilityFragment) : List<Disability>? {
return fragment.arguments?.getParcelable<DisabilityData>(SelectDisabilityFragment.DISABILITY_DATA)?.disabilities
}
}
}
This is the enum
enum class Disability(val value: String) {
HEARING("hearing"), VISUAL("visual")
}
Upvotes: 1
Views: 170
Reputation: 2852
The error message mentions a wildcard ? extends x.x.results.Disability
. You probably need to use the @JvmSuppressWildcards
annotation.
Try fun provideDisabilities(fragment: SelectDisabilityFragment) : List<@JvmSuppressWildcards Disability>
.
By the way, I don't think you need the @JvmStatic
with the newer versions of Dagger.
Upvotes: 1