首页 > 解决方案 > Textwatcher 处理程序不会在 Android 9 中使用 EditText Phone 输入类型调用数字

问题描述

我遇到了 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 及以下的数字处理正确。如果我没有设置正确处理输入类型数字。

标签: androidunity3dandroid-edittexttextwatcher

解决方案


推荐阅读