Pendengar Perubahan Teks untuk Medan EditText Android
Masalah:
Dalam aplikasi Android, anda ingin memastikan bahawa hanya satu daripada dua medan EditText (medan1 dan medan2) boleh mempunyai kandungan pada bila-bila masa. Apabila pengguna menukar teks dalam medan1, medan2 harus dikosongkan dan begitu juga sebaliknya.
Walau bagaimanapun, menambah TextWatcher pada kedua-dua medan menyebabkan apl ranap disebabkan gelung tak terhingga di mana setiap medan mencetuskan medan yang lain dibersihkan.
Penyelesaian:
Untuk menyelesaikan isu ini, tambah semak kepada kaedah onTextChanged TextWatcher untuk mengosongkan medan lain hanya jika ia mempunyai kandungan tidak kosong. Berikut ialah kod yang diubah suai:
field1.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() != 0) field2.setText(""); } }); field2.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() != 0) field1.setText(""); } });
Dengan pengubahsuaian ini, apl hanya akan mengosongkan medan lain apabila pengguna menaip sesuatu ke dalam medan semasa, memastikan hanya satu medan mempunyai kandungan pada satu masa.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextWatchers dalam Medan EditText Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!