¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?

Estoy intentando hacer la preferencia del diálogo en preferencias, donde el usuario apenas chasca el botón positivo para accionar una cierta acción. (Borrar base de datos? No | Sí)

public class MyDialogPreference extends DialogPreference { public MyDialogPreference(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); Log.d(MainActivity.TAG, "# onDialogClosed: " + positiveResult); } } 

En realidad, no quiero persistir nada, sólo disparador onSharedPreferenceChanged activado, por lo que puede manejar en la actividad. Pero no puedo imaginar cómo desencadenarlo

//SOLUCIÓN

 @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if(positiveResult) { persistBoolean(!getPersistedBoolean(true)); } Log.d(MainActivity.TAG, "# onDialogClosed: " + positiveResult); } 

onSharedPreferenceChanged se llama debido a la devolución de llamada incorporada registrada en la sharedpreference , a menos que cambie la clave asociada con dialogPreference no va a obtener la onSharedPreferenceChanged llamada onSharedPreferenceChanged .

Así que lo que podría hacer es cada vez que el diálogo está cerrado, podría cambiar el valor de la clave. Algo como abajo

 text = getPersistedString("1") if(text.length() > 10) text = "1"; persistString(text+"1"); 

Asegúrese de que su cuadro de diálogo tiene una clave y android: persistente como true en xml

  • Mostrar el botón de arriba en la barra de acción en las preferencias de la pantalla principal
  • Actualizar actividad si se cambia la preferencia
  • Android: ¿Cómo restablecer / eliminar las preferencias de la aplicación durante las pruebas de unidad?
  • Obtener SharedPreferences de un servicio
  • Actividad de preferencias de Android IllegalArgumentException: fragmento no válido para esta actividad
  • ¿cómo puedo establecer el valor marcado en ListPreference
  • Abrir EditTextPreference a través del código (programatically)
  • Agregar botones a PreferenceFragment
  • Mailto de preferencias xml posible?
  • ¿Es posible cambiar el resumen de EditTextPreference dinámicamente en Android?
  • Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.