Android TextWatcher.afterTextChanged 및 TextWatcher.onTextChanged
어떤 상황에서 afterTextChanged
대신 onTextChanged
또는 그 반대로 사용해야 합니까?
이러한 이벤트는 다음 순서로 호출됩니다.
beforeTextChanged (CharSequence s, int start, int count, int after) .
이것은 문자가 새로운 텍스트로 대체 될 것임을 의미합니다. 텍스트를 편집 할 수 없습니다.
사용 : 변경하려고하는 이전 텍스트를 살펴 봐야 할 때.onTextChanged (CharSequence s, int start, int before, int count) .
변경되었으며 일부 문자가 교체되었습니다. 텍스트를 편집 할 수 없습니다.
사용 : 텍스트에서 새로운 문자를 확인해야 할 때.afterTextChanged (Editable s) 입니다. 텍스트를 편집 할 수 있다는
점을 제외하면 위와 동일 합니다. 사용 : 새 텍스트를보고 편집해야 할 때 사용하십시오 .
의 변경 사항 만 듣고 있다면 EditText
처음 두 가지 방법을 전혀 사용할 필요가 없습니다. 세 번째 방법으로 새 값을 받고 필요한 경우 새 텍스트를 수정합니다. 그러나 값에 발생하는 정확한 변경 사항을 추적 해야하는 경우 처음 두 가지 방법을 사용합니다. 변경 사항을 듣고 텍스트를 편집 해야하는 경우 세 번째 방법으로 텍스트를 편집합니다.
public void afterTextChanged (편집 가능 s)
이 메소드는
s
텍스트 내 에서 어딘가에 텍스트가 변경되었음을 알리기 위해 호출됩니다 .s
이 콜백에서 추가로 변경하는 것은 합법적 이지만 변경하면이 메소드가 재귀 적으로 다시 호출 될 수 있으므로 무한 루프에 빠지지 않도록주의하십시오. (다른 afterTextChanged () 메소드가 이미 다른 변경을 수행하고 오프셋을 무효화했기 때문에 변경이 발생한 위치는 알 수 없습니다. 그러나 여기서 알아야 할 경우setSpan(Object, int, int, int)
inonTextChanged(CharSequence, int, int, int)
을 사용 하여 위치를 표시 한 후 여기에서 찾을 수 있습니다. 스팬이 끝났습니다.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
이 메소드는 에서 시작
s
하는count
문자start
가 길이가 새 문자로 대체 될 예정 임을 알리기 위해 호출됩니다after
.s
이 콜백에서 변경을 시도하는 것은 오류 입니다.
public void onTextChanged (CharSequence s, int start, int before, int count)
이 메소드는 에서 시작
s
하는count
문자start
가 길이가있는 오래된 텍스트를 대체 했음을 알려주기 위해 호출됩니다before
.s
이 콜백에서 변경을 시도하는 것은 오류 입니다.
오른쪽에서 TextWatcher 안드로이드의 참조 .
Android Textwatcher
입력 필드의 텍스트 변경시 호출되는 일종의 트리거입니다.
afterTextChanged (Editable s)
-이 메소드는 텍스트가 변경되었을 때 호출됩니다. 변경하면이 메소드가 재귀 적으로 다시 호출되므로 여기에서 작업 수행에주의해야합니다. 그렇지 않으면 무한 루프로 이어질 수 있습니다 .
onTextChanged (CharSequence s, int start, int before, int count)
-이 메소드는 s 내에서 시작에서 시작하는 카운트 문자가 이전에 길이가 있었던 오래된 텍스트를 대체했음을 알려줍니다. 이 콜백에서을 변경하려고 시도하면 오류가 발생합니다.
'IT story' 카테고리의 다른 글
페이지 새로 고침시 Firefox 개발자 도구 네트워크 패널이 지워지는 것을 방지 할 수 있습니까? (0) | 2020.07.29 |
---|---|
SQL Server Management Studio에서 테이블의 값을 빠르게 편집하는 방법은 무엇입니까? (0) | 2020.07.29 |
Android : 전화가 듀얼 SIM인지 확인 (0) | 2020.07.29 |
Powershell이 명령을 병렬로 실행할 수 있습니까? (0) | 2020.07.29 |
텍스트 입력 캐럿 스타일링 (0) | 2020.07.29 |