2011-09-23 138 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

男人,你真的是安迪魯賓嗎? –

相關問題