android view注入,android – 如何使用依赖注入在ViewModel中注...
如果你想在你的Fragment中提供带有构造函数的viewmodel作为依赖项,那么有一种不同的方法,让我们假设您有一个viewmodel类,如下所示,class SampleViewmModel(dataManager:DataManager):ViewModel(){//some logic}然后你需要创建一个工厂类来支持上面的viewmodel,如下所示,class SampleFactor
如果你想在你的Fragment中提供带有构造函数的viewmodel作为依赖项,那么有一种不同的方法,
让我们假设您有一个viewmodel类,如下所示,
class SampleViewmModel(dataManager:DataManager):ViewModel(){
//some logic
}
然后你需要创建一个工厂类来支持上面的viewmodel,如下所示,
class SampleFactory @Inject constructor(var dataManager:DataManager): ViewModelProvider.Factory {
override fun create(modelClass: Class): T {
if (modelClass.isAssignableFrom(SampleViewModel::class)) {
return SampleViewModel(dataManager) as T
}
throw IllegalStateException()
}
}
现在在你的模块类中,你可以按如下方式注入上面的类,(Note-Datamanager类是可注入的)
//Provide Factory
@Provides
fun provideFactory(dataManager:DataManager): SampleFactory {
return SampleFactory(dataManager)
}
//Provide actual viewmodel
@Provides
fun provideViewModel(sampleFactory: SampleFactory): SampleViewModel {
return ViewModelProviders.of(fragment, sampleFactory)[SampleViewModel::class]
}
在你的Fragment中没有,你可以像任何其他依赖一样注入你的viewmodel,
@Injetct
lateinit viewModel:SampleViewModel
更多推荐
所有评论(0)