在可组合项和活动之间共享 viewModel

问题描述 投票:0回答:1

我可以在属于 ActivityA 和 ActivityB 的可组合项中注入相同的视图模型,但不能具有相同的实例,如何使用 Dagger Hilt 提供相同的视图模型实例?有什么办法可以摆脱困境吗?

android dependency-injection android-jetpack-compose viewmodel dagger-hilt
1个回答
0
投票

应该相当简单:

在你的 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
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.