setText для edittext, вызывающего сбой в addTextChangedListener - PullRequest
2 голосов
/ 24 сентября 2010

Я пытаюсь убрать все нестандартные буквенные символы из текстового поля edittext в приложении для Android, которое я создаю. Я успешно создаю слушателя, получаю значение и удаляю плохие chrs с помощью регулярных выражений. однако строка .setText ниже вызывает сбой приложения. У кого-нибудь есть идеи, как обойти это и динамически маскировать определенных chrs?

filenameTextBox.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        FILENAME=s.toString();
        FILENAME = FILENAME.replaceAll("[^a-zA-Z]", "");
        filenameTextBox.setText(FILENAME);
   }
}

Ответы [ 3 ]

6 голосов
/ 26 сентября 2011

Надеюсь, этот фрагмент поможет вам, если я ясно понимаю вашу проблему

        public void afterTextChanged(Editable editable)
        {
            if (editable.length() != 0)
            {
                chatTextArea.removeTextChangedListener(this);
                chatTextArea.setText("your text");
                chatTextArea.addTextChangedListener(this);
            }
        }
0 голосов
/ 23 января 2014
public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        chatTextArea.removeTextChangedListener(this);
        String s_new = s.toString().replaceAll("[^0-9]", ""); // for example, if need
        chatTextArea.setText(s_new);
        chatTextArea.setSelection(start + count + s_new.length() - s.length());
        chatTextArea.addTextChangedListener(this);
    }
0 голосов
/ 24 сентября 2010

Разве вы не создаете бесконечный цикл?Вы можете регистрироваться каждый раз, когда вызывается обработчик, и видеть, сколько раз он вызывается.

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