首页 > 解决方案 > 在 MVVM 架构中使用 DialogFragment 的正确方法是什么?

问题描述

我正在尝试在 MVVM 架构中使用 DialogFragment,但我找不到某些问题的答案。

  1. 我应该使用@AndroidEntryPoint 注释吗?像这样:

    @AndroidEntryPoint
    class MyDialogFragment(): DialogFragment() {
    
    }
    
  2. 我应该如何提供 viewModel?DialogFragment 应该有自己的 viewModel 吗?还是使用 Fragment 的 viewModel 更好?像这样:

    val viewModel: FragmentViewModel by viewModels()
    

    或者

    val viewModel: DialogFragmentViewModel by viewModels()
    
  3. 我应该如何与我调用 DialogFragment 的片段进行通信?

标签: androidkotlinmvvmandroid-dialogfragmentdagger-hilt

解决方案


您应该以这种方式使用 @AndroidEntryPoint 注释 DialogFragment 并且不要忘记添加@Assisted private val savedStateHandle: SavedStateHandle您的 viewModel 构造器,第二个问题是个人喜好,有些人会使用主要片段 ViewModel 但如果您打算在多个地方使用 DialogFragment 可以有有自己的视图模型,至于通信,您可以使用事件传递数据,您可以查看https://developer.android.com/guide/topics/ui/dialogs#PassingEvents


推荐阅读