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

2votos

Muy buenas colegas desarrolladores,
Estoy desarrollando una aplicación para android, que debe poseer una opción para cambiar el tamaño de la fuente entre las siguientes opciones:

  • Normal
  • Mediana
  • Grande
  • Muy grande

He creado una "Preferencia" usando "PreferenceSetting,

Acá la estructura XML:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >  
    <PreferenceCategory
        android:title="@string/config_app_preferencias">
      <ListPreference
          android:title="@string/config_prefs_titulo"
          android:summary="@string/config_prefs_sumario" 
          android:entries="@array/tamanofuente"
          android:entryValues="@array/valores_tamanofuente"
          />      
    </PreferenceCategory>
</PreferenceScreen>

Estos son los <string-array> que llenan los atributos "entries" y "entryValues":

<string-array name="tamanofuente">
    <item>Normal</item>
    <item>Mediana</item>
    <item>Grande</item>
    <item>Muy Grande</item>
</string-array>

<string-array name="valores_tamanofuente">
    <item>0</item>
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>

enter image description here

Mis pregunta es la siguiente...

¿Cómo puedo conocer la opción que se ha seleccionado? y ¿Cómo puedo
tomar en valor de la opción seleccionada y guardarla usando
SharedPreferences?

De antemano muchisimas gracias.
Saludos =)

0voto

Novus Ordo Seclorum comentado

Puedes poner el código de tu activity para ver de que manera muestras ese dialogo ?? y así poder saber que método usas. Y entender un poco mejor tu pregunta.

0voto

Villanuevand comentado

Hola @novus-ordo-seclorum en mi activity solo tengo esto...
public class PreferenciasActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferencias_principal);
}

2 Respuestas

2votos

egoitz_gonzalez Puntos10050

Hola.

Creo que el siguiente código te puede servir de referencia. Luego tendrás que adaptarlo un poco, ya que tu agarras los valores de un array. Eso tendrá que ser tratado y no sé exactamente cual sería el código. Tendrás que hacer alguna prueba y después poner la respuesta.

    @Override
public boolean onPreferenceChange(Preference preference, Object value)
{
    String textValue = value.toString();

    ListPreference listPreference = (ListPreference) preference;
    int index = listPreference.findIndexOfValue(textValue);

    CharSequence[] entries = listPreference.getEntries();

    if(index >= 0)
        Toast.makeText(preference.getContext(), entries[index], Toast.LENGTH_LONG);

    return true;
}
  • Index contiene el índice del elemento que se ha hecho clic
  • TextValue es el valor seleccionado
  • entries[index] Es el texto selecicionado

fuente: http://stackoverflow.com/questions/6148952/how-to-get-selected-text-and-value-android-listpreference

0voto

Villanuevand comentado

En este justo instante estaba implementando la clase " OnPreferenceChangeListener".
Y conociendole un poco sobre ella...
Por esta vía es la cosa...

0voto

egoitz_gonzalez comentado

Me alegro de que te sirva. Si puedes comenta exactamente el código que has usado para servir de ejemplo para el resto de la comunidad.

saludos.

0voto

Villanuevand comentado

Seguro, en cuanto termine completamente ese módulo lo colocaré acá.
Lo que hice fué tomar las opciones de un ListPreference, obtenerlas y almacenarlas, hacer un dialogFrament un dialogo de preferencias en una actividad diferente, y esas opciones grabarlas en SharedPreferences.

Ojalá sea compresible.

2votos

egoitz_gonzalez Puntos10050

Hola.

Las preferencias se guardan en un fichero XML y para saber las opciones elegidas por el usuario se lee ese mismo fichero. Cada preferencia se almacena en forma de clave valor.

por ejemplo para escribir el fichero (MisPreferencias.xml) seguimos el siguiente paso:

SharedPreferences prefs =  getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);

SharedPreferences.Editor editor = prefs.edit();
editor.putString("nombre", "Roberto");
editor.putString("telefono", "11111111");
editor.commit();

Para leer estos datos:

String nombre = prefs.getString("nombre", "nombrePorDefecto");
String telefono = prefs.getString("telefono", "telefonoPorDefecto");

nombrePorDefecto y telefonoPorDefecto son los valores que recogeremos en el caso de que no exista la preferencia nombre o telefono.

espero que te sirva. Saludos.

0voto

Villanuevand comentado

Hola @egoitz_gonzalez gracias por responder.
Ya tenía conocimiento del funcionamiento de SharedPreferences, lo que no tengo todavía claro es cómo a traves de PreferenceSettings puedo obtener el valor de un ListPreferences. Esa es mi duda.

Por los momentos no he logrado conseguir respuesta a esta y por ende es que la respuesta sigue sin ser respondida.

Saludos y muchas gracias por ayudarme.

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