Na mojej aplikacji umieszczam TextWatcher w EditText. Kiedy zmieniam tekst EditText, zdarzenia TextWatchera są wywoływane dwukrotnie.Zdarzenia z TextWatchera są wywoływane dwukrotnie
Używam emulatora do uruchamiania aplikacji.
Na mojej aplikacji umieszczam TextWatcher w EditText. Kiedy zmieniam tekst EditText, zdarzenia TextWatchera są wywoływane dwukrotnie.Zdarzenia z TextWatchera są wywoływane dwukrotnie
Używam emulatora do uruchamiania aplikacji.
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) {}
});
tak, mój kod jest taki sam, ale klawisz "hit" jest wyświetlany dwukrotnie, gdy naciskam klawisz –
niż ruch Toast wywołuje afterTextChanged. Ta metoda powinna być wywoływana tylko raz na jedno trafienie. –
Tak, jeśli "HIT KEY" pojawia się dwukrotnie, wklej toast w afterTextChanged AS zasugerował Beike. – raman
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()
.
podać kod. – Slickelito
po kodu pls. – vipsy
zobacz tutaj http://stackoverflow.com/questions/17535415/textwatcher-events-are-being-fired-multiple-times – susemi99