垃圾邮件EditText导致冻结

时间:2013-05-22 11:12:44

标签: android android-edittext

我有一种带有+-按钮的数量字段。

当用户点击这些按钮时,它会递增或递减EditText内的整数。我使用EditText而不是TextView,因为用户也可以使用键盘手动编辑字段。

当用户长按时,我启动一个快速更新EditText的线程,当用户释放按钮时线程停止。更新效果不错,但我的应用程序由于EditText监听器而变得迟钝。

我得到了很多这样的日志:

05-22 12:56:21.625: W/IInputConnectionWrapper(15137): getTextAfterCursor on inactive InputConnection
05-22 12:56:21.635: W/IInputConnectionWrapper(15137): getTextBeforeCursor on inactive InputConnection
05-22 12:56:21.635: W/IInputConnectionWrapper(15137): getTextAfterCursor on inactive InputConnection
05-22 12:56:21.635: W/IInputConnectionWrapper(15137): getTextBeforeCursor on inactive InputConnection

我设法通过在启动帖子之前将KeyListener置为空来避免冻结

editText.setKeyListener(null)

但我对该解决方案不太满意,因为它改变了软键盘输入类型。每次用户点击按钮时,软键盘从数字输入类型变为标准输入类型。

在发送EditText垃圾邮件时是否有其他方法可以避免冻结?

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情......

NumberKeyListener keyListener = new NumberKeyListener() {

        public int getInputType() {
        return InputType.TYPE_CLASS_NUMBER;
        }

        @Override
        protected char[] getAcceptedChars() {
        return new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ':', '-', ',' };
        }
    };

然后设置

editText.setKeyListener(keyListener);

这将确保您获得数字输入类型..

希望这会有所帮助..