【发布时间】:2023-01-28 05:45:12
【问题描述】:
我有两个Fragments,让它成为Fragment A和Fragment B。在Fragment A中,我使用viewModel.items.collect {}从数据库中获取数据。在collect {} 中,用户看到了DialogFragment。问题是,当我转到Fragment A 时,我看到了这个对话框,然后转到Fragment B,然后返回Fragment A 并再次看到这个对话框,尽管这不是一个好消息。是否有可能以某种方式使它从Fragment B返回到Fragment A时不显示此对话框?
viewLifecycleOwner.lifecycleScope.launch {
viewModel.items.collect {
MyDialog().show(childFragmentManager, MyDialog.TAG)
}
}
【问题讨论】:
-
您在哪种片段方法中添加了此代码?
-
@jayeshgurudayalani 在 onViewCreated()
-
您可以尝试将此代码与您的视图模型初始化代码一起移动到片段的
onCreate吗 -
@jayeshgurudayalani 是的,我尝试这样做,但应用程序崩溃并出现错误:当 getView() 为 null 时无法访问片段视图的 LifecycleOwner,即在 onCreateView() 之前或 onDestroyView() 之后
-
@jayeshgurudayalani 使用 viewLifecycleOwner 对我来说非常重要是有原因的——我的对话框不会立即调用,而是在特定的计时器上调用。我可以打开 Fragment A,然后打开 Fragment B,此时计时器到期并且应用程序崩溃,因为在错误的片段中调用了对话框。
标签: android kotlin android-dialogfragment