当我在演示者中注入方法时,我得到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
现在在My Presenter中有一个ServiceGenerator类,我也在我的提供者类中提供,我在我的演示者中注入服务生成器,问题发生在我调用演示者时,演示者内部注入的ServiceGenerator给出UninitializedPropertyAccessException是什么原因导致的它,我该如何解决这个问题?演示者类的片段如下所示
class MainPresenter : MainContract.Presenter {
@Inject
lateinit var serviceGenerator: ServiceGenerator
当我去val newsService = serviceGenerator.createService(ApiService::class.java,Constants.BASE_URL)
打电话给我错误,如果我做错了,请指导我
你可以做以下两件事之一:
inject
方法,并在您的演示者中调用它,就像你已经完成了你的Activity
。Activity
中注入时,“自动”注入演示者的依赖项:
class MainPresenter @Inject constructor(
private val serviceGenerator: ServiceGenerator
) : MainContract.Presenter {
}