2011-09-23 5 views
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(); 
     } 
    }); 

을하지만 이벤트가 삽입 된 각각의 기호 다음 트리거하지만 난 그것을 원하지 해달라고 ..

나는 사용자가 텍스트 편집기와 텍스트를 떠날 때 이벤트를 트리거 할 필요가

변경, 내가 질문을 할 것입니다 렸기 때문에 google 맵 api. 각 문자를 입력 한 후에 쿼리를 수행 할 수 없습니다.

답변

3

+0

위의 코드는 아니지만,이 경우 hasChanged가 TextWatcher의 onTextChanged에 설정되어 있다고 가정합니다. – Tapirboy

+0

oops는 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 

    } 
} 

은}

yourTextView.setOnFocusChangeListener(new OnFocusChangeListener() { 

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

다른 옵션이 과정을 지연시키고 다른 키 스트로크가 발생하는 경우 다시 확인하는 타이머를 시작 onTextChanged을 사용하는 것입니다) (당신이 onFocusChanged을 시도했습니다. 이 방법은 응용 프로그램에 더 적합하지만, 구현하기 까다 롭습니다 수

편집 또는 당신이 boolean View.onKeyPreIme(int keyCode, KeyEvent event)을 무시하고 키 입력 캡처 (하지만 당신은 또한 뒤로 키를 눌러 사용자에 대해 생각해야합니다 수

키보드를 닫으십시오).

+0

나는 이것을 시도하고 내가 원하는 것을 원하지 않는다. – Vytautas

+0

내 편집 된 답변보기 –

+0

남자, 당신은 정말로 Andy Rubin입니까? –

관련 문제