我有一个 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 实例吗?
答案 0 :(得分:0)
使用 Common 类概念。 制作一个公共类和一个公共静态变量,您需要的数据类型并在那里存储值,当您需要访问时,只需使用 Common.YOUR_VARIABLE_NAME;
Public class Common{
public static REQUIRED_DATATYPE variableName;
}
将您需要在另一个活动中访问的值存储为
Common.variableName = YOUR_VALUE;
当您需要使用时,只需输入 Common.variableName
如有不清楚的地方,请随时提问。