У меня есть SignUpFragment, в котором для регистрации используется Firebase, и есть наблюдатель liveata.
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()
}
}
})
Когда пользователь успешно зарегистрировался, я перемещаюсь по нему на экране входа в систему, но на экране входа в систему также есть наблюдатель liveata, который использует ту же переменную.
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()
}
}
})
Здесь вы можете видеть, что условие будет истинным для обоих случаев и Экран входа в систему переключается на HomeScreen.
Как я могу справиться с такой ситуацией? Обратите внимание, что я делюсь viewmodel, используя
private val viewModel: AuthViewModel by activityViewModels()
Также заменен this
на viewLifecycleOwner
, но все еще нет надежды.