Search code examples
androidpreferences

Check and Format preference string value before committing back to preferences


I have an EditTextPreference. After the user has edited the preference and pressed ok I then want to check the value for formatting errors before committing.

public class Preferences_Default extends PreferenceActivity implements OnSharedPreferenceChangeListener  {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);

             addPreferencesFromResource(R.layout.prefs_default);
    }  
}

 @Override
     protected void onResume() {
         super.onResume();

         // Set up a listener whenever a key changes            
         getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
     }

    @Override
    protected void onPause() {
        super.onPause();

        // Unregister the listener whenever a key changes

getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);    

    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        //This just calls a function to update the Pref Summary
        Preference pref = findPreference(key);
        initSummary(pref);

    }

Where would I put the call to the function that checks the value and what is the code to re-commit the preference value if altered.


Solution

  • Friend, as you just specified, you have to check this in your code: you have to put it first line before it gets updated

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    //function to check 
    
     boolean b=check();
    
      //This just calls a function to update the Pref Summary 
    
    if(b)
    {    
    Preference pref = findPreference(key);
        initSummary(pref);}
    
    else{
    //whatever you want to do show error
    }
    
    }