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

1voto

Como guardar enteros en SharedPreference

Hola a todos, tengo una duda, apuesto que ah de ser muy sencilla pero aún estoy entrando en la programación, quiero guardar en Shared Preference Strings como nombre y correo, eso no hay problema, lo guarda, pero también quiero agregar "score", el cual tengo un botón que al clickearlo incrementa y quiero que al darle click en el botón "guardar" me guarde también el "score":


    SharedPreferences sharedpreferences;
    TextView nombre;
    TextView email;
    public static final String mypreference = "mipref";
    public static final String Nombre = "nameKey";
    public static final String Email = "emailKey";
    public static final String Score ="score";
    int counter = 0;
    private Button Bcounter;
    private TextView cun;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nombre = (TextView) findViewById(R.id.nombre);
        email = (TextView) findViewById(R.id.email);
        Bcounter=(Button) findViewById(R.id.button);
        cun = (TextView) findViewById(R.id.textView);

        sharedpreferences = getSharedPreferences(mypreference,Context.MODE_PRIVATE);
        if (sharedpreferences.contains(Nombre)) {
            name.setText(sharedpreferences.getString(Name, ""));
        }
        if (sharedpreferences.contains(Email)) {
            email.setText(sharedpreferences.getString(Email, ""));

        }
        if (sharedpreferences.contains(Score)){
            cun.setText(sharedpreferences.getInt(Score,1));
        }

        Bcounter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter++;
                cun.setText(Integer.toString(counter));

            }
        });

    }

    public void guardar(View view) {
        String n = nombre.getText().toString();
        String e = email.getText().toString();
        String c = cun.getText().toString();
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString(Nombre, n);
        editor.putString(Email, e);
        editor.putInt(Score, Integer.parseInt(c));
        editor.commit();
    }

El error que me manda es

Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x5

A lo mejor al momento de "castear" de entero a String pero no se realmente.
Disculpen si es algo sencillo, pero aún ando iniciando.

2 Respuestas

2votos

x4mp73r Puntos13390

La verdad no sé en que número de línea te marca ese error, pero ese error efectivamente al pasar de entero a string, a lo cual la solución es ésta:

Integer.toString();
//Supongo que algo así debe ser
 cun.setText(Integer.toString(sharedpreferences.getInt(Score,1)));

De hecho ya lo habías utilizado en el OnClick() para pasarle los números al TextView

0voto

userTemp comentado

Gracias, no me dí cuenta que ya lo había utilizado en el OnClick(), gracias otra vez

2votos

cobasESP Puntos19650

La variable score inicialmente es una string y despues la intentas guardar como int, hay esta el problema y despues:

editor.putString(Nombre, n);
editor.putString(Email, e);
editor.putInt(Score, Integer.parseInt(c));

Eso deberia darte error porque score, email y hnombre deberian ser strings ya que es el nombre con el que guardas el valor.

0voto

userTemp comentado

Gracias @cobasESP por tu respuesta :D

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