1

私はこれを試しました:

houseField.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
            Toast.makeText( getApplicationContext(), s, 15000).show();
        }
    });

しかし、各シンボルが挿入された後にイベントがトリガーされましたが、私はそれを望んでいません。

ユーザーがテキストエディットを離れてテキストが変更されたときにイベントをトリガーする必要があります。これは、GoogleMapsAPIにクエリを実行するためです。各文字を入力した後、クエリを実行できません。

4

2 に答える 2

3

onFocusChanged()を試しましたか

 yourTextView.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
      if(hasFocus)
      {
        //do your logic here
      }
    }
 }

もう1つのオプションは、onTextChangedを使用してタイマーを開始し、プロセスの遅延をチェックして、別のキーストロークが発生した場合にリセットすることです。このアプローチはアプリケーションにより適しているかもしれませんが、実装するのは難しいです

編集

または、Enterキーを上書きboolean View.onKeyPreIme(int keyCode, KeyEvent event)してキャプチャすることもできます(ただし、ユーザーがキーボードを閉じるために戻るキーをタップすることも考慮する必要があります)。

于 2011-09-23T12:19:30.857 に答える
0
use 
String sChange ="";
boolean change=false;
    @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
             String new=s.toString();
             if(!sChange.equalsIgnoreCase(new))
            {
                Toast.makeText( getApplicationContext(), sChange, 15000).show();
                change=true;
            }
            else
             change=false;
           }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
              sChange=s;
        }

yourTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
  if(hasChanged)
  {
if(change)
//google logic

  }
}

}

于 2011-09-23T12:18:34.963 に答える