6

我正在制作一个应用程序来充当远程键盘,用户将在其中单击编辑文本并键入,并在计算机中键入相应的字母。

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

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

作为一个解决方案,我所做的是,设置一个 onkeylistener,它将检测回车键并执行操作并使用它,但不幸的是,在这种情况下,第一个 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。

此外,如果您可以建议不同的方法来检测和发送字符(软),那就太好了。

4

1 回答 1

1

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

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

这样,如果输入的最后一个键是“输入”,那么它会进入这个状态,然后你可以执行任何你想要的。

于 2012-10-02T08:18:10.153 回答