2012-10-02 80 views
5

我正在做一个应用程序作为远程键盘,用户将点击一个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。

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

+0

我也试图把如果cond。在TextWatcher内部检查最新的更改是否包含非字母数字字符。如果这样做,那么它不会out.println()。但这也不起作用。它仍然检测到输入键并进入if cond并执行out.println()。 – PrateekArora

+0

好吧,我想我解决了它。在textwatcher中添加if语句: if(s.toString()。substring(start).contains(“\ n”))如果最后一个键输入是'enter',那么它会进入这个,然后u可以执行任何你想要的。 – PrateekArora

回答

1

好吧,我想我解决了它。在Textwatcher加入这个if语句:

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

以这种方式,如果最后的键输入是“输入”,那么它将进入这然后ü可以执行任何ü希望。