Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextWatchers dalam Medan EditText Android?

Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextWatchers dalam Medan EditText Android?

DDD
DDDasal
2024-11-12 09:41:02198semak imbas

How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn