如何将函数作为参数传递给目标片段-Android导航组件

时间:2020-08-01 22:12:20

标签: android kotlin android-dialogfragment android-navigation

我有一个扩展了DialogFragment的类,我想将其用作导航图中的目标,以便像打开其他任何片段一样打开它。我想将函数作为参数传递给我的DialogFragment类,以便在肯定和否定按钮侦听器中使用。在这种情况下,它们将是调用片段中的函数。

因此,可以将函数作为参数传递给导航组件目标,还是有另一种方法可以做到这一点。 DialogFragment是否需要自己的ViewModel?

1 个答案:

答案 0 :(得分:0)

我最终完成此操作的方式是通过共享的ViewModel,如@CommonsWare建议的那样。

ViewModel的设置如下:

class ViewModel(application: Application) : AndroidViewModel(application) { }

并以此实例化,在两个片段中都使用requireActivity()来确保它充当单例,因为这些片段共享父活动。

val viewModel = ViewModelProvider(requireActivity()).get(ViewModel::class.java)