【问题标题】:How to share a ViewModelProvider.Factory instance between Activities如何在活动之间共享 ViewModelProvider.Factory 实例
【发布时间】:2021-04-25 07:09:20
【问题描述】:

我有一个 ViewModelProvider.Factory 实例,它负责实例化 ViewModel 并将存储库注入 ViewModel。

这对 Fragments 很有效,因为我只需为我的自定义 Fragment 工厂提供 ViewModel 工厂:

this.supportFragmentManager.fragmentFactory = MyFragmentFactory(myViewModelFactory)

片段工厂在实例化片段时将 ViewModel 工厂注入片段。然后 Fragments 可以通过以下方式访问 ViewModel:

mapViewModel = ViewModelProvider(this, myViewModelFactory).get(MyViewModel::class.java) 

但是,我想启动一个新的 Activity,它也需要访问同一个 ViewModel 工厂。

我可以在不使用全局变量的情况下跨 Activity 共享我的 ViewModelProvider.Factory 实例吗?

【问题讨论】:

    标签: android android-activity dependency-injection android-lifecycle


    【解决方案1】:

    使用通用类的概念。创建一个通用类和一个您所需数据类型的公共静态变量并将值存储在那里,当您需要访问时,只需使用 Common.YOUR_VARIABLE_NAME;

    Public class Common{
      public static REQUIRED_DATATYPE variableName;
      }
    

    将您需要在另一个活动中访问的值存储为
    Common.variableName = YOUR_VALUE; 当您需要使用时,只需键入Common.variableName

    如有不清楚之处,请随时询问。

    【讨论】:

    • 感谢您的回答,但问题要求提供一种避免使用全局变量的方法。
    • 然后就可以使用sharedViewModel了
    • 据我所知,这仍然需要一个全局变量。我一直在对此进行更多研究,似乎无法避免在活动之间共享重要数据时使用一些全局变量。
    • 使用 bundle 共享数据
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多