super.onCreate(savedInstanceState); mViewModel = new ViewModelProvider到目前为止,我在每个片段中都使用了这个近似值来实例化相同的模型,并能够与其中的变量进行交互: //FragmentClass.java (public class F1_Start_AcquisitionFragmentActivity)
ActivityViewModels和懒惰ViewModelProvider之间的区别?我已经看到了两种初始化视图模型的方法: private val someViewModel: SomeViewModel by activityViewModels() ViewModelProvider(this).get(SomeOtherViewModel::class.java)
}我知道la
我有一个视图模型,应该在两个片段之间共享。这两个片段位于导航图中,在每个片段中,我这样做是为了引用视图模型:
private val viewModel: MyViewModel by navGraphViewModels(R.id.my_nav_graph这两个片段共享视图模型中的数据。但是我注意到,当我从第一个片段切换到第二个片段时,视图模型中的init方法再次运行,如果我打印出视图模型的名称,
但是,有一个问题是,以前没有dagger2时,我使用了在多个片段中的活动中使用的相同的视图模型实例(使用fragment方法activityViewModels()),但是现在由于dagger2正在注入视图模型,所以它总是为每个片段提供新的实例(每个片段中使用hashCode检查),这就中断了使用视图模型的片段之间的通信。片段和视图模型代码如下所示:
class MyFragment: Fragme