【发布时间】:2020-12-17 16:15:21
【问题描述】:
我的 MainActivity 包含 5 个带有 ViewPager 的片段(FragmentA、FragmentB、FragmentC....E)。 FragmentA 具有 viewModel 并观察一个名为“showPopupSuccess”的 MutableLiveData,它在执行任务后设置为 true。
问题是当我去 FragmentC 然后回到 FragmentA。弹出窗口再次显示,因为观察者看起来像“重新激活”。如何摆脱这个?我希望 mutableLiveData 被重置。所以它没有任何价值,也没有显示弹出窗口
如果您想进一步了解,这是该错误的视频 https://www.youtube.com/watch?v=Ay1IIQgOOtk
【问题讨论】:
-
解决此问题的正确方法是在您转到另一个片段时更新您的 UI 状态。该片段再次显示弹出窗口,因为状态仍然相同。添加更多状态以表示“任务成功但已显示”(或其他),在这种特定状态下,您的 FragmentA 仍然知道它是成功的,但不会调用
showPopup()。因此,当您单击(我认为)显示“配置文件”(底部栏)时,您应该将其传递给您的虚拟机。 VM 应该推送状态以确保如果您返回,现在会再次显示弹出窗口。
标签: android mvvm android-viewmodel