Dagger 无法识别提供者实现

时间:2021-04-07 16:57:46

标签: dagger-2 dagger

我有一个枚举列表,我需要通过构造函数注入它以查看模型,但 dagger 因此错误而失败

 SelectDisabilityComponent.java:7: error: [Dagger/MissingBinding] java.util.List<? extends x.x.results.Disability> cannot be provided without an @Provides-annotated method.

这是模块

@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
        }


    }
}

这是枚举

enum class Disability(val value: String) {
    HEARING("hearing"), VISUAL("visual")
}

1 个答案:

答案 0 :(得分:0)

错误消息提到了通配符 ? extends x.x.results.Disability。您可能需要使用 @JvmSuppressWildcards 注释。

试试fun provideDisabilities(fragment: SelectDisabilityFragment) : List<@JvmSuppressWildcards Disability>

顺便说一下,我认为较新版本的 Dagger 不需要 @JvmStatic

相关问题