Search code examples
androidsharedpreferencesedittextpreference

Android EditText preference validation


I am using Edittextpreference as one of the preference in settings section. I want to validate this edittextpreference when the user enters data to it and clicks ok; before saving it in sharedpreference.

I am trying to do something like this but this saves the preference first I suppose.

editTextPreference
            .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference,
                        Object newValue) {
                    if (((newValue.toString().length() == 15) {
                          // save preference only if length is equal to 15
                     }
              })
               });

can someone guide me how to validate edittextpreference before it is saved in sharedpreference so that I can decide if I want to save it or not.


Solution

  • According to doc here

    Called when a Preference has been changed by the user. This is called before the state of the Preference is about to be updated and before the state is persisted.

    And it returns True to update the state of the Preference with the new value.

    So you can do the following

          editTextPreference
                .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                    @Override
                    public boolean onPreferenceChange(Preference preference,
                            Object newValue) {
                        if (((newValue.toString().length() == 15) {
                              //
                              return true;
                         }
                         else{
                              // invalid you can show invalid message
                              return false;
                         }
                  })
           });