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();
        }
    });

但是在插入每个符号后触发事件但我不想要那个..

当用户离开 textedit 并更改文本时,我需要触发事件,因为我会查询 google maps api。输入每个字符后我无法进行查询。

4

2 回答 2

3

你试过 onFocusChanged()

 yourTextView.setOnFocusChangeListener(new OnFocusChangeListener() {

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

另一种选择是使用 onTextChanged 启动一个计时器,该计时器检查延迟过程并在发生另一次击键时重置。这种方法可能更适合您的应用程序,但实施起来更棘手

编辑

或者,您可以覆盖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 回答