Lo que suelo hacer es:
1 - Hacer una nueva clase que extiende el tipo de preferencia que necesito para mostrar (1 según el tipo de preferencia) 2 - Dentro de su código, haga lo actiob apropiado para mostrar el resumen actualizado
3 - Consulte esta clase en el res/xml/preferences.xml archivo
Let me swo un pequeño ejemplo, para una buena EditTextPreference:
CLS_Prefs_Edit.java
/**
* CLS_Prefs_Edit class
*
* This is the class that allows for a custom EditTextPrefence
* (auto refresh summary).
*
* @category Custom Preference
* @author Luca Crisi ([email protected])
* @copyright Luca Crisi
* @version 1.0
*/
package com.your_name.your_app;
/* -------------------------------- Imports --------------------------------- */
import android.content.Context;
import android.preference.EditTextPreference;
import android.util.AttributeSet;
public final class CLS_Prefs_Edit
extends EditTextPreference
{
/* ---------------------------- Constructors ---------------------------- */
public CLS_Prefs_Edit(final Context ctx, final AttributeSet attrs)
{
super(ctx, attrs);
}
public CLS_Prefs_Edit(final Context ctx)
{
super(ctx);
}
/* ----------------------------- Overrides ------------------------------ */
@Override
public void setText(final String value)
{
super.setText(value);
setSummary(getText());
}
}
res/xml/preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
>
<PreferenceCategory android:title="@string/pref_phone_cat">
<!-- NORMAL EditTextPreference, NO summary update -->
<!-- <EditTextPreference -->
<!-- android:widgetLayout="@layout/arr_dn" -->
<!-- android:key="phone" -->
<!-- android:title="@string/pref_phone_title" -->
<!-- android:summary="@string/pref_phone_summ" -->
<!-- android:defaultValue="" -->
<!-- android:inputType="phone" -->
<!-- android:digits="+1234567890" -->
<!-- /> -->
<!-- MY EditTextPreference, WITH summary update -->
<com.your_name.your_app.CLS_Prefs_Edit
android:widgetLayout="@layout/arr_dn"
android:key="phone"
android:title="@string/pref_phone_title"
android:summary="@string/pref_phone_summ"
android:defaultValue=""
android:inputType="phone"
android:digits="+1234567890"
/>
</PreferenceCategory>
</PreferenceScreen>
Por supuesto, establecer sus cadenas en/res/valores/cuerdas, y ya está.
Tenga en cuenta que esta solución funciona tanto para PreferenceFragments como para PreferenceActivities.
Lo estoy usando para una aplicación que se ejecuta en 2.2 Froyo (que muestra una actividad de preferencia), así como en 4.4 KitKat (que muestra un PreferenceFragment)
Espero que ayude.
posible duplicado de [¿Cómo se muestra el valor actual de una Preferencia de Android en el resumen de Preferencias?] (Http://stackoverflow.com/questions/531427/how-do-i-display-the-current -value-of-an-android-preference-in-the-preference-su) –