对话框可以在 android 中有视图模型吗?
Can a Dialog have a view model in android?
我需要从对话框进行 API 调用。我是否需要返回片段才能这样做,或者有什么方法可以引用片段视图模型吗?
我认为您可以将高阶函数传递给对话框并使用内部的 viewModel 在片段中处理它。
你可以试试这个:
使用接口,在fragment中实现它,这样你就有回调函数了。
传递高阶函数,在对话框中这样声明:
var click: (() -> Unit)? = null;
然后您可以在实例化对话框时从片段中设置它。
使用共享视图模型,例如在您的 activity 中创建视图模型,然后您可以像这样从每个片段或对话框访问它:
(requireActivity() as MainActivity).viewModel
像这样,您可以在对话框中的视图模型变量(通常是 liveData)中设置值并观察片段中的变化
是的,这是可能的,我能够做到这一点,因为 class DialogFragment 扩展了 Fragment。所以我像添加任何其他片段一样添加了一个视图模型。
如下所示,其中 BaseDialog class 扩展了 DialogFragment
我需要从对话框进行 API 调用。我是否需要返回片段才能这样做,或者有什么方法可以引用片段视图模型吗?
我认为您可以将高阶函数传递给对话框并使用内部的 viewModel 在片段中处理它。
你可以试试这个:
使用接口,在fragment中实现它,这样你就有回调函数了。
传递高阶函数,在对话框中这样声明:
var click: (() -> Unit)? = null;
然后您可以在实例化对话框时从片段中设置它。
使用共享视图模型,例如在您的 activity 中创建视图模型,然后您可以像这样从每个片段或对话框访问它:
(requireActivity() as MainActivity).viewModel
像这样,您可以在对话框中的视图模型变量(通常是 liveData)中设置值并观察片段中的变化
是的,这是可能的,我能够做到这一点,因为 class DialogFragment 扩展了 Fragment。所以我像添加任何其他片段一样添加了一个视图模型。
如下所示,其中 BaseDialog class 扩展了 DialogFragment