¿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
- Cómo hacer que un cuadro de diálogo de PreferenciaActividad abra una ventana de diálogo para establecer una preferencia personalizada
- Preferencias de Android: ¿Cómo cargar los valores predeterminados cuando el usuario no ha utilizado la pantalla de preferencias?
- ¿Es seguro guardar los tokens de acceso / actualización de Oauth2 en las Preferencias compartidas de Android?
- Preferencias de Android: Valores predeterminados incorrectos DESPITE "setDefaultValues"
- Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?
//SOLUCIÓN
@Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if(positiveResult) { persistBoolean(!getPersistedBoolean(true)); } Log.d(MainActivity.TAG, "# onDialogClosed: " + positiveResult); }
- ¿Cómo mantener la configuración del idioma de la aplicación después de reiniciar el dispositivo?
- Disposición de la pantalla de preferencias de Android
- Cómo utilizar support.v7.preference con AppCompat y posibles inconvenientes
- ¿Cómo puedo agregar por programación EditTextPreferences a mi PreferenceFragment?
- Cómo implementar una confirmación (sí / no) DialogPreference?
- Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
- Cómo utilizar PreferenceFragment?
- Cómo establecer el resumen de preferencias edittext y hacer que se pegue
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