【发布时间】:2023-06-09 05:39:01
【问题描述】:
当我在我的演示者中注入一个方法时,我得到了 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
现在在我的 Presenter 中有一个 ServiceGenerator 类,我也在我的提供程序类中提供了该类,并且我在我的 Presenter 中注入服务生成器,当我将注入的 Presenter 称为 ServiceGenerator 在演示者内部给出 UninitializedPropertyAccessException 这是什么原因,我该如何解决? Presenter类的sn-p如下图
class MainPresenter : MainContract.Presenter {
@Inject
lateinit var serviceGenerator: ServiceGenerator
当我去val newsService = serviceGenerator.createService(ApiService::class.java,Constants.BASE_URL)
时
打电话给我,如果我做错了什么,请指导我
【问题讨论】:
标签: android kotlin dependency-injection retrofit dagger-2