¿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); } 

One Solution collect form web for “¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?”

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

  • ¿cómo puedo establecer el valor marcado en ListPreference
  • Preferencias anidadas.xml
  • Uso de preferencias no predeterminadas en PreferenceActivity
  • Pantalla de Preferencias de Android sin XML
  • Cómo implementar una confirmación (sí / no) DialogPreference?
  • Preferencias de Android: ¿Cómo cargar los valores predeterminados cuando el usuario no ha utilizado la pantalla de preferencias?
  • Uso de la preferencia de lista en Android
  • Android: ¿Cómo navegar de nuevo desde la sub-pantalla de preferencia a través de la barra de acción en xml?
  • Establecer indicadores de intención para PreferenceScreen en xml
  • ¿Cómo se declara el tipo de preferencia de Android?
  • Android: ¿Cómo ver el archivo SharedPreferences?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.