如何在活动之间共享 ViewModelProvider.Factory 实例

时间:2021-04-25 07:09:20

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

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

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

this.supportFragmentManager.fragmentFactory = MyFragmentFactory(myViewModelFactory)

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

Public class Common{
  public static REQUIRED_DATATYPE variableName;
  }

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

如有不清楚的地方,请随时提问。