0

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

当用户点击这些按钮时,它会增加或减少EditText. 我使用 anEditText而不是 aTextView因为用户也可以使用键盘手动编辑该字段。

当用户长按时,我启动一个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在启动线程之前设置为 null 来避免冻结

editText.setKeyListener(null)

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

发送垃圾邮件时是否有另一种方法可以避免冻结EditText

4

1 回答 1

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);

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

希望这可以帮助..

于 2013-05-22T11:31:10.827 回答