首页 > 解决方案 > 构造函数注入在 kotlin 类中不起作用

问题描述

我已将我的 dagger 模块、组件和类转换为 kotlin。在 Model 类中使用构造函数注入时遇到以下错误:

java.lang.IllegalStateException: dataManager.appSettings must not be null

这是我的模块类:

@Module
class BaseModule {
    @Provides
    fun provideBaseViewModel(application: Application, dataManager: DataManager, serviceConnector: ServiceConnector, compositeDisposable: CompositeDisposable): BaseModel {
        return BaseModel(application, dataManager, serviceConnector, compositeDisposable)
    }
}

这是我的具有构造函数注入的模型类:

class BaseModel @Inject constructor(application: Application, dataManager: DataManager,compositeDisposable: CompositeDisposable) : BaseViewModel(application, dataManager, compositeDisposable) {

    val appSettings: AppSettings
        get() = dataManager.appSettings
}

这是组件类:

@Component(modules = [BaseModule::class])
interface BaseComponent {
    fun inject(activity: BaseActivity)
}

标签: androidkotlindagger-2

解决方案


dataManager.appSettings可以为空的类型吗?

如果是,您可以将其设为可为AppSettings空,如下所示:

val appSettings: AppSettings?

推荐阅读