androidvalidationedittextpreference

Validating EditTextPreference on Android


I have read the many answers on this question but my question is asking where I place the code. I am looking to validate that a number is greater than 100 in the EditTextPreference. This is the code I use to populate the preferences:

public class SettingsFrag extends PreferenceFragment{
          
  //Override onCreate so that the code will run when the activity is started.
  @Override
  public void onCreate(Bundle savedInstanceState){        
          //Call to the super class.
          super.onCreate(savedInstanceState);
          
          //add the preferences from the XML file.
          addPreferencesFromResource(R.xml.preferences);
  }

}

Is it in here I add the validation or would I have to create another class?

preferences.xml:

<EditTextPreference             
    android:key="geofence_range"             
    android:title="Geofence Size"             
    android:defaultValue="500"     
    android:inputType="number"
    android:summary="Geofence Size Around User Location"             
    android:dialogTitle="Enter Size (meters):" /> 

Solution

  • Add setOnPreferenceChangeListener for EditTextPreference after addPreferencesFromResource to validate data input for User:

    EditTextPreference edit_Pref = (EditTextPreference) 
                        getPreferenceScreen().findPreference("geofence_range");
       edit_Pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    
         @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
              // put validation here..
                if(<validation pass>){
                  return true;
                }else{
                  return false;
                 }
           }
        });