如何删除EditText"临时内存"

时间:2016-02-22 09:34:21

标签: android android-edittext hex textwatcher

基本上我试图设置的是一些十六进制转换 所以我创建了一个textwatcher,这样如果它刚刚输入的字符中没有看到A-F或0-9,那么它将退格。

然而,如果我输入一个有效的字符(同样是AF和0-9),那么错误的东西就没问题了:我输入了一些无效的字符并将其删除,但是一旦我输入另一个字符有效的角色,无效的角色出现在它背后 - 好像它们永远不会退缩。

实际上它会显示自动纠正。
因此,例如我尝试在edittext中输入A0pk,它只显示A0,因为它们是唯一有效的字符。
但是,自动更正显示A0pk - 所以有一些临时内存搞乱我的edittext 我需要知道的是如何清除或删除此临时内存或者是否有任何解决方法。

在我的TextWatcher中:

    public void afterTextChanged(Editable s) {

        EditText binarynumber = (EditText) findViewById(R.id.binarynumber);

        if (s.toString().length() != 0) {


        if (s.toString().charAt(s.toString().length() - 1) != 'A' && s.toString().charAt(s.toString().length() - 1) != 'B' && s.toString().charAt(s.toString().length() - 1) != 'C' && s.toString().charAt(s.toString().length() - 1) != 'D' && s.toString().charAt(s.toString().length() - 1) != 'E' && s.toString().charAt(s.toString().length() - 1) != 'F' && s.toString().charAt(s.toString().length() - 1) != '0' && s.toString().charAt(s.toString().length() - 1) != '1' && s.toString().charAt(s.toString().length() - 1) != '2' && s.toString().charAt(s.toString().length() - 1) != '3' && s.toString().charAt(s.toString().length() - 1) != '4' && s.toString().charAt(s.toString().length() - 1) != '5' && s.toString().charAt(s.toString().length() - 1) != '6' && s.toString().charAt(s.toString().length() - 1) != '7' && s.toString().charAt(s.toString().length() - 1) != '8' && s.toString().charAt(s.toString().length() - 1) != '9') {

            binarynumber.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
            binarynumber.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
        }

    }

    }
};

0 个答案:

没有答案