¿Por qué mi mensaje de error aparece continuamente en Android Kotlin?
No sé cómo hacer que mi mensaje de tostada de fallo se muestre solo una vez.
Toast.makeText(this, vm.logInResult.value, Toast.LENGTH_SHORT).show()
private fun addData(edtTxt: String, pasTxt: String) {
val repository = UserRepository()
val viewModelFactory = UserViewModelFactory(repository)
viewModel = ViewModelProvider(this, viewModelFactory).get(UserViewModel::class.java)
viewModel.pushUser(edtTxt, pasTxt)
viewModel.userPush.observe(this, Observer { response ->
if (response.isSuccessful) {
dismissLogoProgressDialog()
Log.d(“MainResponse”, response.body().toString())
Log.d(“MainExecute”, response.code().toString())
Log.d(“Main”, response.message())
val check = response.body()
Log.d(“checkdata”, “” + check?.userinfo?.email)
val tokn: String = check!!.token
if (sharedPreference.getValueString(“token”) != null) {
sharedPreference.clearSharedPreference()
}
sharedPreference.save(“token”, tokn)
sharedPreference.save(“login_uid”, check.userinfo.uid)
sharedPreference.save(“change_pass”, pasTxt)
println(check)
startActivity(Intent(this, DashboardActivity::class.java))
finish()
} else {
dismissLogoProgressDialog()
Toast.makeText(this, "Contraseña incorrecta", Toast.LENGTH_SHORT).show()
}
})
}
davy.ai
Para hacer que el mensaje de tostada de error se muestre solo una vez, puedes usar una variable booleana para llevar un registro de si el mensaje se ha mostrado o no. Esta variable puede inicializarse como falsa fuera del observador, y luego establecerse como verdadera una vez que se muestre el mensaje de tostada.
Aquí tienes un ejemplo de implementación:
Usando la variable
failureToastShown
, el mensaje de tostada solo se mostrará una vez por intento fallido. Si el usuario vuelve a intentarlo y obtiene otra respuesta fallida, el mensaje de tostada se mostrará nuevamente.