Обработчики Textwatcher не вызывают номера с типом ввода EditText Phone в Android 9 - PullRequest
0 голосов
/ 26 апреля 2019

Я столкнулся с проблемой с Android 9 и типом ввода телефона EditText.Если вы установите TextWatcher в качестве прослушивателя измененного текста, его обработчики (onTextChanged, beforeTextChanged, afterTextChanged) не будут вызываться.Вот мой код:

final EditText textArea = (EditText)context.findViewById(resources.getIdentifier("textArea", "id", packageName));
textArea.setInputType(InputType.TYPE_CLASS_PHONE);
 textArea.addTextChangedListener(new TextWatcher() {
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        Log.v("Unity", "string: " + s.toString());
                        if (!multiLinesMode) {
                            if (s.length() == 0) {
                                SendData(2, "");
                                return;
                            }
                            char lastchar = s.toString().charAt(s.length()-1);
                            if (lastchar == '\n')
                                close();
                            else
                                SendData(2, s.toString());
                        } else
                            SendData(2, s.toString());
                    }
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                        Log.v("Unity", "before");
                    }
                    @Override
                    public void afterTextChanged(Editable s) {
                        Log.v("Unity", "after");
                    }
                });

Обработчики будут вызываться для каждой кнопки с клавиатуры телефона, кроме цифр.Если я использую Android 8 и ниже, номера обрабатываются правильно.Если я не установил, номера типов ввода обрабатываются правильно.

...