package de.vier_bier.habpanelviewer.preferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import de.vier_bier.habpanelviewer.Constants; import de.vier_bier.habpanelviewer.R; import de.vier_bier.habpanelviewer.UiUtil; public class PreferencesConnected extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences_connected); EditTextPreference connectedIntervalPreference = (EditTextPreference) findPreference(Constants.PREF_CONNECTED_INTERVAL); connectedIntervalPreference.setOnPreferenceChangeListener(new NumberValidatingListener(0, 6000)); } private class NumberValidatingListener implements Preference.OnPreferenceChangeListener { private final int minVal; private final int maxVal; NumberValidatingListener(int minVal, int maxVal) { this.minVal = minVal; this.maxVal = maxVal; } @Override public boolean onPreferenceChange(final Preference preference, Object o) { boolean invalid; try { int val = Integer.parseInt((String) o); invalid = val < minVal || val > maxVal; } catch (NumberFormatException e) { invalid = true; } if (invalid && getActivity() != null && !getActivity().isFinishing()) { UiUtil.showDialog(getActivity(), preference.getTitle() + " " + getResources().getString(R.string.invalid), getString(R.string.noValidIntInRange, minVal, maxVal)); return false; } return true; } } }