对话框可以在 android 中有视图模型吗?

Can a Dialog have a view model in android?

我需要从对话框进行 API 调用。我是否需要返回片段才能这样做,或者有什么方法可以引用片段视图模型吗?

我认为您可以将高阶函数传递给对话框并使用内部的 viewModel 在片段中处理它。

你可以试试这个:

  1. 使用接口,在fragment中实现它,这样你就有回调函数了。

  2. 传递高阶函数,在对话框中这样声明:

    var click: (() -> Unit)? = null;

    然后您可以在实例化对话框时从片段中设置它。

  3. 使用共享视图模型,例如在您的 activity 中创建视图模型,然后您可以像这样从每个片段或对话框访问它:

(requireActivity() as MainActivity).viewModel

像这样,您可以在对话框中的视图模型变量(通常是 liveData)中设置值并观察片段中的变化

是的,这是可能的,我能够做到这一点,因为 class DialogFragment 扩展了 Fragment。所以我像添加任何其他片段一样添加了一个视图模型。

如下所示,其中 BaseDialog class 扩展了 DialogFragment