Итак, у меня есть этот код, который, когда я нажимаю кнопку
btnLogin.setOnClickListener {
val user = UserLogin(etUsername.text.toString(), etPassword.text.toString())
viewModel.login(user)
}
, я буду наблюдать это
fun login(user: UserLogin) {
loginGateway.loginBuyer(user)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { _loginState.postValue(LoginLoading) }
.subscribe({
if(it.data != null)
_loginState.postValue(LoginSuccess(it.data))
else
_loginState.postValue(LoginFailed(it.message))
}, {
_loginState.postValue(LoginError(it.localizedMessage))
})
.addTo(disposable)
}
, а вот наблюдатель
viewModel.loginState.observe(this, Observer {it ->
when (it) {
LoginLoading -> {
dialog.show()
}
is LoginSuccess -> {
dialog.dismiss()
if (cbRemember.isChecked)
viewModel.saveUsername(etUsername.text!!.toString())
viewModel.saveFirstname(it.user.firstName)
findNavController().navigate(R.id.toMain)
}
is LoginFailed -> {
dialog.dismiss()
showErrorDialog(this.context!!, "Login Failed", it.message)
}
is LoginError -> {
dialog.dismiss()
showErrorDialog(this.context!!, "Login Error", it.message)
}
}
})
Так что это проблема, когда мне не удалось войти в систему, чтобы он отображал диалоговое окно, а когда было закрыто, и когда я захожу на страницу регистрации и возвращаюсь, чтобы войти в систему, то же диалоговое окно все еще появляется.
Я пытался сделатьнапример, поставить removeObservers(this)
на onPause () и onDestroy (), но все равно.Я не совсем уверен, если проблема заключается в жизненном цикле фрагмента, если нет, пожалуйста, помогите мне понять, что происходит.Я новичок в kotlin и mvvm, пожалуйста.Спасибо:)