>  기사  >  Java  >  여러 EditText 필드와 함께 TextChangeListener를 사용할 때 무한 루프를 방지하는 방법은 무엇입니까?

여러 EditText 필드와 함께 TextChangeListener를 사용할 때 무한 루프를 방지하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-19 00:14:02139검색

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

여러 EditText 필드가 있는 Android 텍스트 변경 리스너

Android 개발에서 TextChangeListener를 사용하면 개발자가 EditText 필드의 텍스트 콘텐츠 변경 사항을 모니터링할 수 있습니다. . 그러나 여러 EditText 필드를 사용하는 경우 다른 필드 수정 시 한 필드의 내용을 지우려면 무한 루프를 피하기 위해 신중한 구현이 필요합니다.

문제:
제공된 코드는 field2를 지우려고 시도합니다. field1이 변경되고 그 반대의 경우도 마찬가지입니다. 그러나 이로 인해 각 필드가 다른 필드의 변경 이벤트를 트리거하여 끝없이 지워지기 때문에 무한 루프가 발생합니다.

해결책:
무한 루프를 방지하려면 확인 비어 있지 않은 필드만 지워지도록 추가해야 합니다. field1.addTextChangedListener 및 field2.addTextChangedListener를 추가하면 두 필드 모두의 변경 사항을 모니터링할 수 있습니다. 각 리스너 내에서 CharSequence 길이가 0보다 큰지 확인하는 조건을 추가합니다. 그렇다면 다른 필드의 내용을 지웁니다.

수정된 코드:

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("");
    }
});

비어 있지 않은 필드만 지워지도록 하면 무한 루프를 방지하고 사용자가 한 번에 하나의 필드에만 데이터를 입력할 수 있습니다.

추가 참고 사항:
명명 규칙을 따르고 명확성을 위해 적절한 들여쓰기를 사용하는 것을 잊지 마십시오. 또한 자세한 내용은 TextWatcher 공식 문서를 참고하세요.

위 내용은 여러 EditText 필드와 함께 TextChangeListener를 사용할 때 무한 루프를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.