Jest to nieco bardziej ogólna odpowiedź, zawierająca więcej wyjaśnień dla przyszłych widzów.
Dodaj detektor ze zmienionym tekstem
Jeśli chcesz znaleźć długość tekstu lub zrobić coś innego po zmianie tekstu, możesz dodać do tekstu edycji detektora ze zmienionym tekstem.
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
Słuchacz potrzebuje TextWatcher
, która wymaga trzech metod, aby zostać zastąpione: beforeTextChanged
, onTextChanged
, i afterTextChanged
.
Liczenie postaci
Możesz uzyskać liczbę znaków w onTextChanged
lub beforeTextChanged
z
charSequence.length()
lub afterTextChanged
z
editable.length()
Znaczenie metod
Parametry są nieco mylące, więc oto dodatkowe wyjaśnienie.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: To jest treść tekstu przed dokonaniem oczekującej zmiany. Nie powinieneś próbować tego zmieniać.
start
: Jest to indeks miejsca, w którym nowy tekst zostanie wstawiony. Jeśli zostanie wybrany zakres, będzie to indeks początkowy zakresu.
count
: Jest to długość zaznaczonego tekstu, który zostanie zastąpiony. Jeśli nic nie zostanie wybrane, count
będzie 0
.
after
: jest to długość tekstu do wstawienia.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: To jest treść tekstu po wprowadzeniu zmiany. Nie powinieneś próbować modyfikować tej wartości tutaj. Modyfikacja editable
w afterTextChanged
jeśli trzeba.
start
: Jest to indeks początku, od którego wstawiono nowy tekst.
before
: To jest stara wartość. Jest to długość wcześniej zaznaczonego tekstu, który został zastąpiony. Jest to ta sama wartość, co count
w beforeTextChanged
.
count
: Jest to długość wstawionego tekstu. Jest to ta sama wartość, co after
w beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Na przykład onTextChanged
jest to wywoływane po dokonaniu zmiany. Jednak teraz tekst może zostać zmodyfikowany.
editable
: To jest edytowalny tekst pliku EditText
. Jeśli jednak to zmienisz, musisz uważać, aby nie dostać się do nieskończonej pętli. Więcej informacji znajduje się w dokumentacji .