如何处理共享相同视图模型和实时数据的片段在两个片段上引起相同的动作?

问题描述 投票:0回答:1

我有一个SignUpFragment,其中使用Firebase进行注册,并且有一个livedata观察器。

SignUpFragment

    viewModel.userMediatorLiveData.observe(this, Observer {
        Timber.i("Screen", this.javaClass.simpleName)
        if (it.status != null && it.message != null) {
            btn_sign_up.showSnack(it.message)
            if (it.status) {
                PreferenceHelper.userPassword = tie_password.getTrimmedText()
                returnToLoginScreen()
            }
        }
    })

[当用户成功注册后,我将其导航到登录屏幕,但是在登录屏幕中,还有一个使用相同变量的实时数据观察器。

LoginFragment

    // this observer is used also for listening to Firebase Login
    viewModel.userMediatorLiveData.observe(this, Observer {
        Timber.i("Screen", this.javaClass.simpleName)
        if (it.status != null && it.message != null) {
            btn_login.showSnack(it.message)
            if (it.status) {
                PreferenceHelper.userPassword = tie_password.getTrimmedText()
                context?.startActivity(HomeActivity::class.java)
                requireActivity().finish()
            }
        }
    })

在这里您可以看到这两种情况都成立,并且登录屏幕切换到主屏幕。

我该如何处理这种情况?请注意,我使用[]

 private val viewModel: AuthViewModel by activityViewModels()

我有一个SignUpFragment,其中使用Firebase进行注册,并且有一个livedata观察器。 SignUpFragment viewModel.userMediatorLiveData.observe(this,Observer {Timber.i(“ Screen” ...

android fragment viewmodel android-livedata
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.