2011-09-27 15 views

Respuesta

14

Aquí hay algo de código que implementa OnPreferenceChangeListener 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; 
     } 
    }); 
} 
+0

El nuevo valor del campo se mantiene en un objeto llamado newValue. Use newValue.tostring para (Your_Test) –

+0

la preferencia no se guardará si usamos esto. –

3

Puede usar el atributo android: inputType para estos campos en el xml, esto mostrará un teclado al usuario para ingresar el valor en un formato específico.

Ver más

http://developer.android.com/reference/android/text/InputType.html

Pero esto no garantizan que la dirección no tenga malformaciones. Que necesitaría verificar usando la expresión regular en su controlador de envío.

+1

Sí. Hice la validación a través de onchangelistener y regexp matcher –

Cuestiones relacionadas