阻止'Enter键'触发TextWatcher

时间:2012-10-02 07:38:50

标签: android android-widget android-edittext

我正在制作一个应用程序作为远程键盘,用户将点击一个edittext并输入相应的字母,然后输入相应的字母。

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

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

作为我所做的解决方案,设置一个onkeylistener,它将检测输入键并执行操作并 CONSUME ,但不幸的是,在这种情况下,第一个textwatcher也被触发,然后是onkeylistener。

这是我的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。

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

1 个答案:

答案 0 :(得分:1)

好吧我想我解决了。在Textwatcher中添加以下if语句:

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

以这种方式,如果输入的最后一个键是'enter',那么它将进入这个,然后你可以执行任何你想要的。