EditText для ввода лицензии - PullRequest
1 голос
/ 28 ноября 2011

В моем приложении для Android при первом запуске пользователь должен ввести лицензию. Формат лицензии - ###-XXX-###-###, где # - это число, X - это символ. Я поставил формат как подсказку, но этого недостаточно. Как я могу сделать так, и пользователь не вводит - он появляется только после 3 символов?

ОБНОВЛЕНИЕ:

Это мой код, и он работает:

licenseEditText.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
                System.out.println("afterTextChanged");
                if (s.length() == 3) {
                    s.append("-");
                }
                if (s.length() == 7) {
                    s.append("-");
                }
                if (s.length() == 11) {
                    s.append("-");
                }
                if (s.length() == 15)
                    ok.performClick();
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                System.out.println("beforeTextChanged");
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                System.out.println("onTextChanges");

            }
        });

Ответы [ 3 ]

3 голосов
/ 28 ноября 2011

установить TextWatcher, внутри него сравнить интересующий текст с regularExpression. и поместите другой код, как после первых 3 символов, добавьте "-" к целому набору символов

1 голос
/ 28 ноября 2011

Вы можете использовать 4 EditTexts и прикреплять к ним текстовые выражения - ввод лицензии в виде окна

0 голосов
/ 27 января 2014

Попробуйте использовать оператор%

if( s.length() == 15) {
   // s.length() = 15
} else if( s.length() % 4 == 3) {
   // s.length = {3, 7, 11, 19, ....}
   // so s.length != 15
}

Таким образом, у вас меньше дублирования кода.Для получения дополнительной информации проверьте: Wikipedia - Операция по модулю

...