Rumah >Java >javaTutorial >Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextChangeListeners dengan Medan EditText Berbilang?

Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextChangeListeners dengan Medan EditText Berbilang?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 00:14:02186semak imbas

How to Prevent Infinite Loops When Using TextChangeListeners with Multiple EditText Fields?

Pendengar Perubahan Teks Android dengan Medan EditText Berbilang

Dalam pembangunan Android, TextChangeListener membenarkan pembangun memantau perubahan dalam kandungan teks medan EditText . Walau bagaimanapun, apabila menggunakan berbilang medan EditText, mengosongkan kandungan satu medan selepas pengubahsuaian yang lain memerlukan pelaksanaan yang teliti untuk mengelakkan gelung tak terhingga.

Isu:
Kod yang disediakan cuba mengosongkan medan2 apabila medan1 berubah dan sebaliknya. Walau bagaimanapun, ini menghasilkan gelung tak terhingga, kerana setiap medan mencetuskan peristiwa perubahan dalam satu lagi, membawa kepada pembersihan tanpa henti.

Penyelesaian:
Untuk mengelakkan gelung tak terhingga, semak perlu ditambah untuk memastikan bahawa hanya medan yang tidak kosong dibersihkan. Dengan menambahkan field1.addTextChangedListener dan field2.addTextChangedListener, anda boleh memantau perubahan dalam kedua-dua medan. Dalam setiap pendengar, tambahkan syarat yang menyemak sama ada panjang CharSequence lebih besar daripada 0. Jika ya, kosongkan kandungan medan lain.

Kod Disemak:

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 memastikan bahawa hanya medan bukan kosong dikosongkan, anda menghalang gelung tak terhingga dan membenarkan pengguna memasukkan data ke dalam satu medan sahaja pada satu masa.

Nota Tambahan:
Ingat untuk mengikuti konvensyen penamaan dan gunakan lekukan yang betul untuk kejelasan. Juga, rujuk dokumentasi rasmi untuk TextWatcher untuk butiran lanjut.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Menggunakan TextChangeListeners dengan Medan EditText Berbilang?. 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