android - 如何在模块中添加视图模型?
问题描述
在 Dagger 中,如何将模型添加到模块?例如,我通过以下方式添加了演示者:
@Module
class AboutModule(val appContext: Context) {
@FragmentScope
@Provides
fun providePresenter(): AboutListContract.Presenter {
return AboutListPresenter(appContext = appContext)
}
}
现在我想添加我的视图模型,还有 appContext。
class AboutViewModel(val appContext: Context): ViewModel() {
更新: 我可以像这样添加我的视图模型吗?
@Module
class AboutModule(val appContext: Context) {
@FragmentScope
@Provides
fun provideModel(model: AboutViewModel): ViewModel {
return AboutViewModel(appContext = appContext)
}
}
解决方案
我用下一个解决方案解决了我的问题:
@Module
class AboutModule(val appContext: Context) {
@FragmentScope
@Provides
fun provideFactory(): AboutViewModelFactory {
return AboutViewModelFactory(appContext)
}
}
在片段中这样写: class AboutFragment : BaseFragment(), OnItemClickListener {
lateinit var viewModel: AboutViewModel
@Inject lateinit var viewModelFactory: AboutViewModelFactory
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
injectDependencies()
viewModel = ViewModelProviders
.of(this, viewModelFactory)
.get(AboutViewModel::class.java)
}
private fun injectDependencies() {
activity?.let {
DaggerAboutComponent.builder().aboutModule(AboutModule(it)).build().inject(this)
}
}