我可以在属于 ActivityA 和 ActivityB 的可组合项中注入相同的视图模型,但不能具有相同的实例,如何使用 Dagger Hilt 提供相同的视图模型实例?有什么办法可以摆脱困境吗?
应该相当简单:
在你的 hilt 模块中创建一个能够提供视图模型实例的函数(确保你的 viewModel 被标记为
@HiltViewModel
并且具有 @inject constructor()
,即使是空的)
@Provides
@Singleton
fun providesXViewModel(/* if your vm requires parameters provided by hilt, place them here, e.g.: dao: Dao*/): XViewModel = XViewModel(/* and then here, e.g.: dao*/)
这应该(我认为)允许您将 viewModel 注入到您的活动中,然后在您的可组合项中使用它们(我建议现场注入)
@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() {
@Inject lateinit var vm: XViewModel
...
}