2012-04-13 19 views
11

Hola compañeros programadores, tengo un pequeño problema con la actividad de Preferencias.Android - ¿Cómo cambiar textos en la actividad de preferencias dinámicamente?

http://developer.android.com/reference/android/preference/PreferenceActivity.html

Tengo sólo una categoría de preferencia y una listPreference:

<?xml version="1.0" encoding="utf-8"?> 

<PreferenceCategory android:title="@string/basic_settings" > 
    <ListPreference 
     android:defaultValue="70" 
     android:entries="@array/listArray" 
     android:entryValues="@array/listValues" 
     android:key="updates_interval" 
     android:persistent="true" 
     android:summary="@string/SOME_SUMMARY" 
     android:title="@string/SOME_TITLE" /> 
</PreferenceCategory> 

tengo que tener el valor seleccionado (el que está por defecto o el usuario lo definió) escrito en el resumen de la listaPreferencia, para ejemplo: Tendremos al menos 70 caracteres.

¿Cómo puedo hacer esto desde el código?

cualquier ayuda se agradece

Respuesta

24

Trate como esto ..

Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key 
customPref.setSummary("desired string"); 
+1

Gracias! :) No vi el método findPreference. – user1332117

0

Se puede crear una subclase de ListPreference en el que se establece una OnPreferenceChangedListener desde la que se tendrá acceso al nuevo valor, y establecer el texto en tu ListPreference. Creo que la función setSummary() en ListPreference actualizará el texto con el nombre de la preferencia. Si eso no funciona, también puede anular getView() para implementar su propia vista personalizada para la Preferencia en la que puede establecer el texto directamente.

1

aquí es un breve ejemplo:

Preference etp = (Preference) findPreference("the_pref_key"); 
etp.setSummary("New summary"); 

Esto requiere que usted exhibe sus preferencias, ya sea desde un PreferenceActivity o de un PreferenceFragment, ya findPreference() es un método de estas clases. Lo más probable es que ya lo hagas.

Para cambiar el resumen cada vez que el usuario cambia la preferencia real, utilice un OnPreferenceChangeListener y compruebe si la clave relevante cambió en la devolución de llamada. Después de que haya cambiado, simplemente edite el resumen como se indica arriba.

+0

¡Así de fácil! Muchas gracias :) Me perdí findPreference método ... – user1332117

Cuestiones relacionadas