Jevgeni Smirnov
Jevgeni Smirnov

Reputation: 3797

Validate preferences. Android

I have PreferenceActivity with 2 fields.

  1. A URL
  2. Time in seconds

I need to validate the first one for a valid URL and the second for an integer value. How do I do it with standard means?

Upvotes: 10

Views: 5750

Answers (2)

Aaron
Aaron

Reputation: 685

Here's some code implementing OnPreferenceChangeListener in your fragment:

@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;
        }
    });
}

Upvotes: 17

Rahul Choudhary
Rahul Choudhary

Reputation: 3809

You can use android:inputType attribute for these fields in the xml, this will display a keyboard to the user for entering the value in a specific format.

See more

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

But this do not guarantee that the URL will not be malformed. That you would need to check using regular expression in your submit handler.

Upvotes: 3

Related Questions