【问题标题】:Can a Dialog have a view model in android?一个对话框可以在android中有一个视图模型吗?
【发布时间】:2021-01-20 17:23:52
【问题描述】:

我需要从 Dialog 进行 API 调用。这样做是否需要回到片段,或者有什么方法可以引用片段视图模型?

【问题讨论】:

    标签: android mvvm view dialog viewmodel


    【解决方案1】:

    你可以试试这个:

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

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

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

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

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

    (requireActivity() as MainActivity).viewModel

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        如下所示,BaseDialog 类扩展了 DialogFragment

        【讨论】:

          猜你喜欢
          • 2011-09-22
          • 1970-01-01
          • 1970-01-01
          • 2016-04-11
          • 1970-01-01
          • 2021-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多