2015-01-07 4 views
2

Возможно, это не так сложно для вас, но мне нужна помощь. У меня есть и editText, который показывает код длиной в 6 цифр. например «292000», «123000» и т. Д.удалить фиксированное количество цифр

У меня есть эта информация в editText Я бы хотел, чтобы пользователь мог удалить последние 2 цифры, чтобы поместить свой номер (они могут только изменить последние две цифры). например "292020" "123001".

Я использую textwatchers, но я не могу использовать setText внутри него, потому что я получу ошибку stackoverflow. Любая помощь будет так оценена.

codArt.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if(codArt.getSelectionStart() < 5) { 
       codArt.setText(charSequence); 
       codArt.setSelection(5); 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
} 

ответ

1

Удалить код из OnTextChanged() метод и попробовать, как показано ниже ...

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      if (s.length() == 4 && after == 0) { 
       codArt.removeTextChangedListener(this); 
       codArt.setText(s); 
       codArt.setSelection(s.length()); 
       codArt.addTextChangedListener(this); 
      } 

    } 
+0

Большое спасибо, что решение идеально подходит для меня. Я полагаю, что вызов removeTextChangedListener заключается в том, чтобы избежать рекурсии, в которой я получаю исключение stackoverflow, не так ли ?. – acostela

+0

Да. Чтобы избежать рекурсивного вызова методов слушателя, я удалил слушателя перед вызовом setText(). – Chandrakanth

0

Попробуйте использовать текстовое изображение с установленным значением как истинный. Установите минимальные символы в «n» и сохраните последние символы «k» как редактируемые. Обычай TextView будет делать трюк

+0

Могу ли я использовать ImeOptions и такого рода вещей с TextView? – acostela

+0

Извините, но я попробовал это, и он не работает. TextView не имеет встроенной поддержки, и мне нужны такие функции – acostela

+0

Да, я понимаю, что собственный текстовый просмотр Android не поддерживает это. Вы пытались написать свой собственный customTextView. Вы можете наложить эти условия там –

Смежные вопросы