2012-08-22 19 views

Odpowiedz

9

Jak wygląda twój kod? to jest normalne zachowanie TextWatchera. Przykład:

myInput.addTextChangedListener(new TextWatcher() { 
     boolean mToggle = false; 

     public void onTextChanged(CharSequence cs, int s, int b, int c) {} 

     public void afterTextChanged(Editable editable) { 
      if (mToggle) { 
       Toast.makeText(getBaseContext(), "HIT KEY",Toast.LENGTH_LONG).show(); 
      } 
      mToggle = !mToggle; 
     } 

     public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
    }); 
+0

tak, mój kod jest taki sam, ale klawisz "hit" jest wyświetlany dwukrotnie, gdy naciskam klawisz –

+0

niż ruch Toast wywołuje afterTextChanged. Ta metoda powinna być wywoływana tylko raz na jedno trafienie. –

+0

Tak, jeśli "HIT KEY" pojawia się dwukrotnie, wklej toast w afterTextChanged AS zasugerował Beike. – raman

0

Mój problem był dodałem textWatcher dwukrotnie mEditText.addTextChangedListener(mTextWatcher), co prowadzi do jego wywołania zwrotne dzwoni dwa razy!

Dodałem tekstWatcher raz w onCreate() i raz w onStart(). Powinienem dodać tylko onStart i usunąć w onStop().