EditText android中的StackOverFlowError

时间:2014-07-16 14:53:27

标签: android mobile android-edittext stack-overflow

我试图为两个字段使用掩码,当我使用maskText时,应用程序崩溃。 这是错误的图像。

enter image description here

这是我用于EditText侦听器的掩码

公共抽象类掩码{

public static String unmask(String s) {
    return s.replaceAll("[.]", "").replaceAll("[-]", "")
            .replaceAll("[/]", "").replaceAll("[(]", "")
            .replaceAll("[)]", "");
}

public static String maskToWebService(String s) {
    return s.replace("/", "T");
}

public static TextWatcher insert(final String mask, final EditText ediTxt) {
    return new TextWatcher() {
        boolean isUpdating;
        String old = "";

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            String str = Mask.unmask(s.toString());
            String mascara = "";
            if (isUpdating) {
                old = str;
                isUpdating = false;
                return;
            }
            int i = 0;
            for (char m : mask.toCharArray()) {
                if (m != '#' && str.length() > old.length()) {
                    mascara += m;
                    continue;
                }
                try {
                    mascara += str.charAt(i);
                } catch (Exception e) {
                    break;
                }
                i++;
            }
            isUpdating = true;
            ediTxt.setText(mascara);
            ediTxt.setSelection(mascara.length());
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void afterTextChanged(Editable s) {

        }
    };
}

如何解决?

1 个答案:

答案 0 :(得分:0)

我发现了问题。 TextWatcher正多次调用实例