小编Ver*_*era的帖子

如何从实时数据中删除观察者,以便在导航回片段时不会显示两次

我有一个片段,当用户成功登录时会显示一个弹出窗口。如果我导航到一个新片段并返回,则会再次显示带有先前用户名的弹出窗口。我使用 SingleLiveEvent 修复了这个问题,但现在必须重构我的代码以使用 MediatorLiveData,因为我的数据可以来自 2 个源(远程和数据库),并且它与 SingleLiveEvent 不兼容。

\n\n

我尝试使用事件包装器并删除 onDestroyView() 上的观察者,但到目前为止没有任何效果,当我移回片段时,livedata onChanged 函数不断被调用。这是我的一些片段:

\n\n
@Override\npublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n                         Bundle savedInstanceState) {\n    // Inflate the layout for this fragment\n    binding = FragmentDashboardBinding.inflate(inflater, container, false);\n    binding.setLifecycleOwner(getActivity());\n\n    //Get the attendanceViewModel for registering attendance\n    attendanceViewModel = ViewModelProviders.of(this).get(AttendanceViewModel.class);\n    attendanceViewModel.getAttendance().observe(getViewLifecycleOwner(), attendanceAndMember -> {\n        if (attendanceAndMember != null && attendanceAndMember instanceof AttendanceMemberModel) {\n            clokedInOutMember = attendanceAndMember.member;\n        }\n        showResultClockInOutPopup();\n    });\n\n    return binding.getRoot();\n}\n\nprivate void showResultClockInOutPopup() {\n\n    clockInBuilder = new AlertDialog.Builder(getActivity());\n\n    View view = getLayoutInflater().inflate(R.layout.status_clock_in_out_popup, null);\n    TextView …
Run Code Online (Sandbox Code Playgroud)

java android android-livedata mediatorlivedata

7
推荐指数
1
解决办法
8167
查看次数