当我在演示者中插入一个方法时,我会收到UninitializedPropertyAccessException
我的提供者类
@Module
class ActivityModule(private var activity: BaseActivity) {
@Provides
fun provideActivity(): BaseActivity {
return activity
}
@Provides
@Inject
fun providePresenter(): MainContract.Presenter {
return MainPresenter()
}
@Provides
@Singleton
fun provideGson(): Gson {
return GsonBuilder().setLenient().create()
}
@Provides
@Inject
@Singleton
fun provideServiceGenerator(): ServiceGenerator {
return ServiceGenerator()
}
}
我的组件类
@Component(modules = [ActivityModule::class])
interface ActivityComponent {
fun inject(mainActivity: MainActivity)
}
然后在我的Activity类中,按如下所示注入组件
val activityComponent = DaggerActivityComponent.builder()
.activityModule(ActivityModule(this))
.build()
activityComponent.inject(this)
单击按钮后一切正常,我正在调用一个api正如您所提供的那样,我有 MainContract.Presenter ,正在将演示者注入我的活动中,并且成功注入了演示者。
@Inject
lateinit var presenter: MainContract.Presenter
现在我的演示者中有一个 ServiceGenerator 类,我也在我的提供者类中提供了该类,并且我正在将我的演示者注入服务生成器。演示者内部的> ServiceGenerator 给出了UninitializedPropertyAccessException的原因是什么,我该如何解决? 演示者类的代码片段,如下所示
class MainPresenter : MainContract.Presenter {
@Inject
lateinit var serviceGenerator: ServiceGenerator
当我去val newsService = serviceGenerator.createService(ApiService::class.java,Constants.BASE_URL)
电话出错了,如果做错了请指导我
答案 0 :(得分:0)
您可以执行以下两项操作之一:
为演示者添加属性/字段注入,在这种情况下,您需要在Component中为其添加一个inject
方法,并在演示者中调用它,就像您完成操作一样您的Activity
。
使用构造函数注入,这样,当演示者的依赖项被注入Activity
时,它将“自动”注入:
class MainPresenter @Inject constructor(
private val serviceGenerator: ServiceGenerator
) : MainContract.Presenter {
}