여러 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!