6

ユーザーが編集テキストをクリックして入力すると、対応するアルファベットがコンピューターに入力されるリモートキーボードとして機能するアプリケーションを作成していました。

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

ユーザーがEnterキーを押すと問題が発生します。これにより、 TextWatcher もトリガーされます。最後に入力した変更を送信しているため、サーバー側にエラーが表示されます。

解決策として、私がしたことは、入力キーを検出してアクションを実行し、それを消費する1つの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());
        }
    }
            .
            .
            .

Enter キーを押すと問題が発生し、TextWatcher の onTextChanged と onkeylistener が起動します。一方、キーリスナーでのみ発火したい。アルファベット、数字、記号などの場合にのみ Textwatcher を起動したい.

また、文字を検出して送信するための別のアプローチを提案できれば(ソフト)、素晴らしいでしょう。

4

1 に答える 1