Как вы проверяете формат и значения EditTextPreference, введенные в Android 2.1? - PullRequest
12 голосов
/ 29 марта 2010

У кого-нибудь есть пример кода для проверки введенного пользователем текста в настройках? Например, у меня есть EditTextPreference для пользователя, чтобы ввести адрес электронной почты. Я хотел бы проверить формат введенного адреса электронной почты и всплывающее диалоговое окно с предупреждением, если формат неправильный. У кого-нибудь есть пример кода для этого? Спасибо

Ответы [ 3 ]

9 голосов
/ 18 июля 2012

Ваш вопрос был ранним попаданием в Google, когда я пытался сделать то же самое, так что, надеюсь, это кому-нибудь поможет. Вот кое-что, что я сегодня взломал вместе, которое демонстрирует OnPreferenceChangeListener, что позволяет вам остановить недопустимые изменения.

в вашем фрагменте:

    @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;
            }
        });
    }
9 голосов
/ 16 апреля 2010

Реализация Preference.OnPreferenceChangeListener

логическое значение onPreferenceChange (предпочтение предпочтения, объект newValue)

Вызывается, когда предпочтение было изменено пользователем. Это вызывается до того, как состояние предпочтения должно быть обновлено, и до того, как состояние сохранится.

Возвращает True, чтобы обновить состояние предпочтения новым значением.

Таким образом, вы можете напрямую вернуть результат проверки значения.

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        findPreference("mail_preference_key").setOnPreferenceChangeListener(
            new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                return Pattern.matches("mailPattern", (String) newValue);
            }

        });
    }
}
2 голосов
/ 03 апреля 2012

Я бы использовал Preference.OnPreferenceChangeListener вместо SharedPreferences.OnSharedPreferenceChangeListener.

Первый позволяет проверить новое значение до его сохранения (и предотвратить его сохранение), а не после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...