entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Mostrar un Toast dependiendo de un valor

Que tal, tengo lo siguiente:


    public void mostrar_mensaje(){
        int puntaje = Integer.parseInt(String.valueOf(user.total+_actual));
        if (puntaje>=100  || puntaje>=150)
        {
            alerta_puntaje();
        }
    }

Ahora, quisiera saber como hacer que el Toast se muestre una sola vez, es decir, si llego a 100 o 120 puntos que muestre el mensaje, pero si vuelvo a hacer 120 puntos otra vez que ya no se muestre, al igual que si llego a 150 puntos o más que solo aparezca el mensaje una sola vez.
No sé si me dí a entender, una disculpa si es sencillo, aún estoy iniciando.
Gracias de antemano.

2 Respuestas

2votos

x4mp73r Puntos13390

Que tal, creo que la forma que dice @Negimaru está bien, pero ese booleano es volátil, es decir, que se va a estar reiniciando y no va a mantener su estado, yo tengo esta opción:
Usar Shared Preference para guardar una variable que te diga que ya se mostró o no, de esta manera si es igual a 1, es decir, si ya se ah mostrado el Toast, que lo guarde, de esta manera cuando vuelvas a caer en ese rango la variable va a cargar el valor desde Shared Preference y ya no lo mostrará.

//Variable Global  
 private int ya_esta_mostrado;

    public void mostrar_mensaje(){
        int puntaje = Integer.parseInt(String.valueOf(user.total+_actual));
        if (puntaje>=100  && puntaje<=150)
        {
 if (ya_esta_mostrado == 1) {
                Log.d(TAG, "¡Ya se ah mostrado! = " + ya_esta_mostrado);

            } else {

                alerta_puntaje();
                ya_esta_mostrado = 1;
                SharedPreferences guardar_mensaje_mostrado = getSharedPreferences("mostrar_prefs", Activity.MODE_PRIVATE);
                SharedPreferences.Editor editor = guardar_mensaje_mostrado.edit();
                editor.putInt("mensaje_mostrado_key", ya_esta_mostrado);
                editor.commit();

            }

        }
    }

Para cargar el valor guardado en Shared Preference escribes lo siguiente dentro de onCreate de tu actividad:

        SharedPreferences sp = getSharedPreferences("mostrar_prefs", Activity.MODE_PRIVATE);
        ya_esta_mostrado = sp.getInt("mensaje_mostrado_key", -1);

Aquí como se puede ver, obtiene el valor getInt de la key y se le asigna un valor por default.

Con eso debe de funcionar.

0voto

userTemp comentado

Muchas gracias, sí, usando Shared Preference como en tu ejemplo si me funcionó :D
:)

4votos

Negimaru Puntos660

Y si declaras un switcher para contolar que solo se ejecute una vez?

    bool switcher = false;
    public void mostrar_mensaje(){
        int puntaje = Integer.parseInt(String.valueOf(user.total+_actual));
        if (puntaje>=100  || puntaje>=150)
        {
           if(!switcher){
            alerta_puntaje();
            switcher = true;
           }
        }
  }

0voto

userTemp comentado

Muchas gracias por tu respuesta, no sé porque no me funciona lo que dices.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta