es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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()
    }
})

}

Tags:  , ,

Answer

  1. Avatar for 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:

    private var failureToastShown = false
    
    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) {
                // manejar respuesta exitosa
            } else {
                // manejar respuesta fallida
                if (!failureToastShown) {
                    Toast.makeText(this, "Contraseña incorrecta", Toast.LENGTH_SHORT).show()
                    failureToastShown = true
                }
            }
        })
    }
    

    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.

Comments are closed.