android view注入,android – 如何使用依赖注入在ViewModel中注...

本文详细介绍了如何在Fragment中使用带有构造函数的ViewModel,并通过创建ViewModelFactory支持。讲解了如何在模块类中注入相关工厂和ViewModel,以及在Fragment中注入ViewModel的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你想在你的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值