我正在做一个应用程序作为远程键盘,用户将点击一个edittext和类型和相应的字母在计算机中键入。防止'输入密钥'触发TextWatcher
我在TextWatcher的帮助下检测到了不同的字母和数字,并成功将它们发送到我的服务器。
用户按下输入键时出现问题。这也触发了TextWatcher。并且由于我正在发送最新输入的更改,所以在服务器端显示错误。
作为一种解决方案是什么我就是做了,onkeylistener设置一个onkeylistener以及这将检测回车键和执行操作和CONSUME,但不幸的是在这种情况下也第一textwatcher被触发,然后。
这里是我的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。
此外,如果您可以建议不同的方法来检测和发送字符(软)将是伟大的。
我也试图把如果cond。在TextWatcher内部检查最新的更改是否包含非字母数字字符。如果这样做,那么它不会out.println()。但这也不起作用。它仍然检测到输入键并进入if cond并执行out.println()。 – PrateekArora
好吧,我想我解决了它。在textwatcher中添加if语句: if(s.toString()。substring(start).contains(“\ n”))如果最后一个键输入是'enter',那么它会进入这个,然后u可以执行任何你想要的。 – PrateekArora