¿Alguien tiene el código de ejemplo para validar el texto introducido por el usuario en las preferencias? Por ejemplo, yo tengo un EditTextPreference para que el usuario introduzca una dirección de correo electrónico. Me gustaría validar el formato de dirección de correo electrónico introducida y aparecerá un cuadro de diálogo de aviso si el formato no es correcto. Alguien tiene algún código de ejemplo para esto? Gracias

OriginalEl autor Bryan C | 2010-03-29

3 Comentarios

  1. 9

    Su pregunta fue una de las primeras de google éxito cuando yo estaba tratando de hacer lo mismo, así que espero que esto ayude a alguien. Hay algo que he hackeado el día de hoy que muestra OnPreferenceChangeListener, permitiendo así que deje de cambios no válidos.

    en su fragmento:

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
    
            Your_Pref = (EditTextPreference) getPreferenceScreen().findPreference("Your_Pref");
    
            Your_Pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    Boolean rtnval = true;
                    if (Your_Test) {
                        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        builder.setTitle("Invalid Input");
                        builder.setMessage("Something's gone wrong...");
                        builder.setPositiveButton(android.R.string.ok, null);
                        builder.show();
                        rtnval = false;
                    }
                    return rtnval;
                }
            });
        }

    OriginalEl autor Aaron

  2. 9

    Implementar Preferencia.OnPreferenceChangeListener

    booleano onPreferenceChange(de Preferencia preferencia, Objeto newValue)

    Llama cuando una Preferencia ha sido cambiado por el usuario. Esto se llama antes de que el estado de la Preferencia está a punto de ser actualizado y antes de que el estado se conserva.

    Devuelve True para actualizar el estado de la Preferencia con el nuevo valor.

    Así que usted puede volver directamente el resultado del valor de la validación.

    public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
            findPreference("mail_preference_key").setOnPreferenceChangeListener(
                new Preference.OnPreferenceChangeListener() {
    
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    return Pattern.matches("mailPattern", (String) newValue);
                }
    
            });
        }
    }
    Tengo el siguiente código: if(tecla.equals(«update_delay»)) { String newvalue = sp.getString(clave, null); if(Integer.parseInt(newvalue) < 60) sp.edit().putString(«update_delay», «60»).commit(); } y la siguiente vez que haga clic en el EditTextPreference que aún muestra el valor bajo. ¿Sabe usted si commit() no funciona en este contexto?
    No estoy seguro, pero en cometer método de referencia dice 1. Tenga en cuenta que cuando dos editores de la modificación de las preferencias, al mismo tiempo, el último de llamar a cometer gana. 2. Devuelve true si los nuevos valores fueron escritas correctamente en el almacenamiento persistente. Punto 1: si el usuario editor de la última llamada. Punto 2: Comprobar si cometen devolver true. Espero que esta ayuda.
    No es este llamado después de que el cambio se hace? Supongo que @Aaron tiene la respuesta correcta.

    OriginalEl autor Fede

Dejar respuesta

Please enter your comment!
Please enter your name here