我有一种带有+
和-
按钮的数量字段。
当用户点击这些按钮时,它会递增或递减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
垃圾邮件时是否有其他方法可以避免冻结?
答案 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);
这将确保您获得数字输入类型..
希望这会有所帮助..