2012-10-02 4 views
5

私はエディットテキストをクリックして対応するアルファベットをコンピュータに入力するリモートキーボードとして機能するアプリケーションを作っていました。トリガーするための 'Enter key'の禁止TextWatcher

私はTextWatcherの助けを借りて多種のアルファベットと数字を検出し、それらを私のサーバに正常に送りました。

ユーザーがEnterキーを押したときに問題が発生します。これにより、TextWatcherもトリガされます。私は最新の変更を送信しているので、サーバー側にエラーが表示されます。 iは、キー入力やアクションを実行検出し、れるだけでなく1 onkeylistenerを設定しなかった何の解決策として

はそれがを消費するが、残念ながらそのような場合にも、最初のtextwatcherがトリガされ、その後、onkeylistenerます。

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を発射、Enterキーを押すである:ここで

は私onkeylistener TextWatcherの

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を起動したい。

また、文字を検出して送信するための別のアプローチ(ソフト)を提案することができます。

+0

私もcondを入れようとしました。 TextWatcherの内部で、最新の変更に英数字以外の文字が含まれているかどうかを確認します。そうであれば、out.println()をshudしません。しかし、それはまた、うまくいきません。それでもenterキーを検出してif条件に入り、out.println()を実行します。 – PrateekArora

+0

私はそれを解決したと思います。 Textwatcherで次のステートメントを追加します: if(s.toString()。substring(start).contains( "\ n"))最後に入力したキーが 'enter'ならば、あなたが望むものは何でも実行できます。 – PrateekArora

答えて

1

私はそれを解決したと思います。 if文Textwatcherでこれを追加します。その方法で

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

を最後のキーが入力されたならば、それはこのに行くだろうし、その後uはuが好き行うことができます「を入力」でした。

関連する問題