防止' Enter key '触发文本观察程序



我正在制作一个用作远程键盘的应用程序,用户可以在其中点击编辑文本并键入相应的字母表,然后在计算机中键入。

在TextWatcher的帮助下,我检测到了各种各样的字母和数字,并成功地将它们发送到了我的服务器。

当用户按下回车键时出现问题。这也会触发TextWatcher。由于我正在发送最新输入的更改,服务器端出现错误。

作为一个解决方案,我所做的是,还设置了一个onkeylistener,它将检测回车键并执行操作,并消费,但不幸的是,在这种情况下,首先触发textwatcher,然后触发onkeylister。

这是我的onkeylistener 的代码

keyboard.setOnKeyListener(new OnKeyListener() {                 
public boolean onKey(View v, int keyCode, KeyEvent event) {                   
if(keyCode == KeyEvent.KEYCODE_ENTER&&event.getAction()==KeyEvent.ACTION_UP){  
out.println("enter");
return true;
}
return false;
}
});

TextWatcher代码:

private TextWatcher watcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count)    {
if(count>0){
out.println(":"+s.subSequence(start, start+count).toString());
}
}
.
.
.

问题是按下回车键时会触发TextWatcher的onTextChanged和onkeylistener。而我只想让关键的监听器开火。我只想在字母、数字、一些符号等情况下解雇Textwatcher。

此外,如果你能建议不同的方法来检测和发送字符(软)将是伟大的。

好的,我想我解决了它。在Textwatcher中添加这个if语句:

if(s.toString().substring(start).contains("n"))

这样,如果最后一个输入的键是"回车",那么它就会进入this is,然后你可以执行你想要的任何操作。

最新更新