Jawaban:
Peristiwa ini dipanggil dalam urutan berikut:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Ini berarti karakter akan diganti dengan beberapa teks baru. Teks tidak bisa diedit.
Gunakan: saat Anda perlu melihat teks lama yang akan berubah.
onTextChanged (CharSequence s, int start, int before, int count) .
Perubahan telah dilakukan, beberapa karakter baru saja diganti. Teks tidak bisa diedit.
Gunakan: saat Anda perlu melihat karakter mana dalam teks yang baru.
afterTextChanged (Dapat diedit) .
Sama seperti di atas, kecuali sekarang teksnya dapat diedit .
Gunakan: saat Anda perlu melihat dan mungkin mengedit teks baru.
Jika saya hanya mendengarkan perubahan EditText
, saya tidak perlu menggunakan dua metode pertama sama sekali. Saya hanya akan menerima nilai baru dalam metode ketiga dan mengoreksi teks baru jika diperlukan. Namun, jika saya harus melacak perubahan tepat yang terjadi pada nilai, saya akan menggunakan dua metode pertama. Jika saya juga perlu mengedit teks setelah mendengarkan perubahan, saya akan melakukannya di metode ketiga.
public void afterTextChanged (Dapat diedit)
Metode ini dipanggil untuk memberi tahu Anda bahwa, di suatu tempat di dalam
s
, teks telah diubah. Andas
boleh membuat perubahan lebih lanjut dari callback ini, tetapi hati-hati jangan sampai Anda terjebak dalam loop tak terbatas, karena setiap perubahan yang Anda buat akan menyebabkan metode ini dipanggil lagi secara rekursif. (Anda tidak diberi tahu di mana perubahan itu terjadi karena metode afterTextChanged () lain mungkin sudah membuat perubahan lain dan membatalkan offset. Tetapi jika Anda perlu tahu di sini, Anda dapat menggunakansetSpan(Object, int, int, int)
inonTextChanged(CharSequence, int, int, int)
untuk menandai tempat Anda dan kemudian mencari dari sini di mana rentangnya berakhir.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Metode ini dipanggil untuk memberi tahu Anda bahwa, di dalam
s
,count
karakter yang dimulai padastart
akan segera diganti dengan teks baru dengan panjangafter
. Ini adalah kesalahan untuk mencoba membuat perubahans
dari panggilan balik ini.
public void onTextChanged (CharSequence s, int start, int before, int count)
Metode ini dipanggil untuk memberi tahu Anda bahwa, di dalam
s
,count
karakter yang dimulai padastart
baru saja menggantikan teks lama yang memiliki panjangbefore
. Ini adalah kesalahan untuk mencoba membuat perubahans
dari panggilan balik ini.
Langsung dari Referensi Android untuk TextWatcher .
Android Textwatcher
adalah salah satu jenis pemicu yang disebut pada perubahan teks dari bidang masukan.
afterTextChanged (Editable s)
- Metode ini dipanggil ketika teks telah diubah. Karena setiap perubahan yang Anda buat akan menyebabkan metode ini dipanggil lagi secara rekursif, Anda harus berhati-hati dalam melakukan operasi di sini, jika tidak, ini dapat menyebabkan pengulangan tak terbatas .
onTextChanged (CharSequence s, int start, int before, int count)
- Metode ini dipanggil untuk memberi tahu Anda bahwa, dalam s, hitungan karakter yang dimulai dari awal baru saja menggantikan teks lama yang memiliki panjang sebelumnya. Ini adalah kesalahan untuk mencoba membuat perubahan dari panggilan balik ini.