2011-09-23 109 views
1

我尝试这样做:如何在TextEdit值更改时触发?

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

但插入每个符号后,事件触发的,但我不想说..

我需要在用户离开文本编辑和文字触发事件被改变,becouse我会做查询谷歌地图API。输入每个字符后我无法进行查询。

回答

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)和捕捉到的回车键(但你也将需要考虑用户敲击返回键关闭键盘)。

+0

它不在上面的代码中,但我想这假设hasChanged是在TextWatcher的onTextChanged中设置的。 – Tapirboy

+0

哎呀,应该hasFocus ...改变它,但是你可以做到这一点,使用onChanged说'hasChanged = true' ...一个偶然的滑落 – Merlin

+0

谢谢你会尝试onFocusChange和计时器应该做那个工作 – Vytautas

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 

    } 
} 

}

+0

我试过这个,那不是我想要的 – Vytautas

+0

看到我编辑的答案 –

+0

男人,你真的是安迪鲁宾吗? –

相关问题