>  기사  >  Java  >  텍스트 변경 시 EditText 필드를 지울 때 무한 루프를 방지하는 방법은 무엇입니까?

텍스트 변경 시 EditText 필드를 지울 때 무한 루프를 방지하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-20 12:19:09230검색

How to Prevent Infinite Loop When Clearing EditText Fields on Text Change?

android on Text Change Listener

이 질문은 두 개의 EditText 필드에 텍스트 변경 리스너를 적용할 때 무한 루프를 방지하는 솔루션을 모색합니다. 필드1과 필드2. field1에서 텍스트가 변경되면 field2가 지워지고 그 반대도 마찬가지입니다.

초기 구현에는 TextWatcher를 두 필드 모두에 연결하는 작업이 포함되었습니다. 여기서 field1에서 텍스트가 변경되면 field2가 지워지고 그 반대의 경우도 마찬가지입니다. 그러나 이로 인해 필드가 서로 무기한 변경을 시도하여 충돌이 발생했습니다.

해결책:

무한 루프를 방지하기 위해 다음에 검사를 추가할 수 있습니다. TextWatchers는 텍스트가 비어 있지 않을 때(즉, 길이가 다음과 다를 때)에만 다른 필드를 지웁니다. 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("");
   }
  });

이 접근 방식을 사용하면 field1이 변경되고 텍스트가 있을 때 field2가 지워집니다. 마찬가지로 field2는 텍스트가 비어 있지 않은 경우에만 field1을 지웁니다. 따라서 원하는 동작을 달성하면서 무한 루프를 피할 수 있습니다.

위 내용은 텍스트 변경 시 EditText 필드를 지울 때 무한 루프를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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