Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 11/02/16, 12:08:02
Array

[xs_avatar]
esi92 esi92 no está en línea
Usuario poco activo
 
Fecha de registro: nov 2015
Mensajes: 20
Modelo de smartphone: Energy Phone Max
Tu operador: Vodafone
SeekBar

Buenas tengo una duda sobre SeekBar a ver si me podeis echar un cable.
Como os muestro en la imagen que he subido tengo un SeekBar de 0 a 10 y según muevo se muestra los números en un textView.
Al yo cerrar la app y volverla a abrir los valores se reinician como es lógico entonces yo lo que quiero es que se mantengan para ello quiero utilizar las preferencias. Utilizo el método CargarPreferencias y GuardarPreferencias que lo vi de ejemplo en una página con un CheckBoox y ahora no se modificar dichos métodos para mi SeekBar. Proporciono mi código, un saludo y gracias.
Código:
package com.a.b;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;

public class Valoracion extends Activity{

    SeekBar seekBar;
    TextView tvCalificacion;
    Button btnGuardarValoracion;

    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_valoracion);

        seekBar = (SeekBar) findViewById(R.id.seekBar);
        tvCalificacion = (TextView) findViewById(R.id.tvCalificacion);
        btnGuardarValoracion = (Button) findViewById(R.id.btnGuardarValoracion);

        CargarPreferencias();
        btnGuardarValoracion.setOnClickListener(new View.OnClickListener() {
            @override
            public void onClick(View view) {
                GuardarPreferencias();
            }
        });

        tvCalificacion.setText("Calificación: "+seekBar.getProgress()+" / "+seekBar.getMax());

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                tvCalificacion.setText("Calificación: "+progress+" / "+seekBar.getMax());
            }
            @override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // When user starts working with control
                // Save the progress if initial value is needed.
            }
            @override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // When user stops interacting
                // Add your own logic here
            }
        });
    }

    public void CargarPreferencias() {
        SharedPreferences mispreferencias = getSharedPreferences("PreferenciasUsuario", Context.MODE_PRIVATE);
        seekBar.setChecked(mispreferencias.getBoolean("checked", false));     //+++++++
    }

    public void GuardarPreferencias() {
        SharedPreferences mispreferencias = getSharedPreferences("PreferenciasUsuario", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = mispreferencias.edit();
        boolean valor = seekbar.isChecked();     //+++++++
        editor.putBoolean("checked", valor);         //+++++++
        seekBar.setChecked(mispreferencias.getBoolean("checked",false));     //+++++++
    }
}
Imágenes Adjuntas
Tipo de Archivo: png aaa.png (54.7 KB, 13 visitas)
Responder Con Cita


  #2  
Viejo 11/02/16, 12:21:15
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
SeekBar hereda de ProgressBar, así que los métodos que buscas están en ProgressBar. setProgress y getProgress, que se le pasa y devuelve un Int respectivamente.

Así que en tu CargarPreferencias tendrías que hacer un setProgress a la SeekBar del campo que te devuelve el getInt de las SharedPreferences.

Y al revés en el Guardar, almacenar en el SharedPreferences.Editor un putInt de un getProgress.

Por cierto que no se donde habrás cogido el tutorial para guardar el valor del CheckBox, pero está mal, porque falta hacer el commit() al editor para que se almacene realmente.
Responder Con Cita
  #3  
Viejo 11/02/16, 13:07:53
Array

[xs_avatar]
esi92 esi92 no está en línea
Usuario poco activo
 
Fecha de registro: nov 2015
Mensajes: 20
Modelo de smartphone: Energy Phone Max
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
SeekBar hereda de ProgressBar, así que los métodos que buscas están en ProgressBar. setProgress y getProgress, que se le pasa y devuelve un Int respectivamente.

Así que en tu CargarPreferencias tendrías que hacer un setProgress a la SeekBar del campo que te devuelve el getInt de las SharedPreferences.

Y al revés en el Guardar, almacenar en el SharedPreferences.Editor un putInt de un getProgress.

Por cierto que no se donde habrás cogido el tutorial para guardar el valor del CheckBox, pero está mal, porque falta hacer el commit() al editor para que se almacene realmente.
Buenas pues lo primero muchas gracias hice lo que me dijo y funcionó .
Lo del commit() si que venía en la página pero había olvidado copiarlo .
Miré pongo el código como queda:
Código:
public void CargarPreferencias() {
    SharedPreferences mispreferencias = getSharedPreferences("PreferenciasUsuario", Context.MODE_PRIVATE);
    seekBar.setProgress(mispreferencias.getInt("PreferenciasUsuario", Context.MODE_PRIVATE));
}

public void GuardarPreferencias() {
    SharedPreferences mispreferencias = getSharedPreferences("PreferenciasUsuario", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = mispreferencias.edit();
    int valor = seekBar.getProgress();
    editor.putInt("PreferenciasUsuario",valor);
    editor.commit();
}
Un saludo y gracias por todo
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:37:57 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /