【发布时间】:2021-06-17 18:19:04
【问题描述】:
我正在处理一个自定义对话框片段,该片段正在从具有不同viewModels 的两个不同视图中使用/调用。而不是在Dialog类的构造函数参数中传递两个单独的viewModels,
class CustomeDialog(var viewModel1: ViewModelA ?= null, var viewModel2 : ViewModelB ?= null) : DialogFragment()
我需要询问/找出一种方法,我可以将 viewModel 的种姓,我想要。
类似的,
class CustomDialog<T:ViewModel> : DialogFragment()
在代码中,它会是这样的
val mdialog1: CustomeDialog by lazy { CustomeDialog(viewModel as ViewModelA) }
还有
val mdialog2: CustomeDialog by lazy { CustomeDialog(viewMode2 as ViewModelB) }
【问题讨论】:
-
您不应该将片段引用存储在惰性属性中。如果配置发生更改,则 OS 将重新创建 Fragment,当您的属性再次被访问时,它将创建该 Fragment 的其他实例,因此您将获得对 not 在屏幕上。如果您需要访问现有的 Fragment,请通过 Fragment Manager 找到它。
标签: android kotlin generics android-viewmodel android-mvvm