gpt4 book ai didi

android - Koin sharedViewModel 与 SavedStateHandle

转载 作者:行者123 更新时间:2023-12-03 21:57:19 41 4
gpt4 key购买 nike

我有单个 Activity 应用程序和 fragment 数。其中一些 fragment 正在使用我的 View 模型,通常是这样的:

private val myViewModel: MyViewModel by sharedViewModel()

如果我想同时拥有模型怎么办 shared并使用 SavedStateHandle 保持其状态?我无法弄清楚这是否受支持,如果支持,需要如何使用它(在托管 Activity 中将 viewmodel 声明为 stateViewModel 不起作用)。

最佳答案

更新:随着 koin 2.1.6 的发布,他们引入了 org.koin.androidx.viewmodel.ext.android.stateSharedViewModel您可以在 fragment 中使用。

经过一个小时的挖掘 Koin 样本并找出一些问题后,好吧:

  • 假设您的 View 模型与此类似:
  • class SavedStateViewModel(val handle: SavedStateHandle, val service: SimpleService) 
  • ...您的 DI 看起来像这样:
  • viewModel { (handle: SavedStateHandle) -> SavedStateViewModel(handle, get()) }
  • 您的共享状态 View 模型可以在您的 fragment 中使用,如下所示:
  • val sharedSaved: SavedStateViewModel by sharedViewModel()
  • (重要!)您的 Activity 中需要此声明:
  • lateinit var savedVm: SavedStateViewModel
  • (重要)您需要在 super.onCreate(savedInstanceState) 之后立即调用此电话在您的 Activity 中:
  • savedVm  = getStateViewModel() 

    重要的是不要对上述(stateViewModel)使用惰性版本。

    关于android - Koin sharedViewModel 与 SavedStateHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61310373/

    41 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com