IT story

Android TextWatcher.afterTextChanged 및 TextWatcher.onTextChanged

hot-time 2020. 7. 29. 07:40
반응형

Android TextWatcher.afterTextChanged 및 TextWatcher.onTextChanged


어떤 상황에서 afterTextChanged대신 onTextChanged또는 그 반대로 사용해야 합니까?


이러한 이벤트는 다음 순서로 호출됩니다.

  1. beforeTextChanged (CharSequence s, int start, int count, int after) .
    이것은 문자가 새로운 텍스트로 대체 될 것임을 의미합니다. 텍스트를 편집 할 수 없습니다.
    사용 : 변경하려고하는 이전 텍스트를 살펴 봐야 할 때.

  2. onTextChanged (CharSequence s, int start, int before, int count) .
    변경되었으며 일부 문자가 교체되었습니다. 텍스트를 편집 할 수 없습니다.
    사용 : 텍스트에서 새로운 문자를 확인해야 할 때.

  3. afterTextChanged (Editable s) 입니다. 텍스트를 편집 할 수 있다는
    점을 제외하면 위와 동일 합니다. 사용 : 새 텍스트를보고 편집해야 할 때 사용하십시오 .

의 변경 사항 만 듣고 있다면 EditText처음 두 가지 방법을 전혀 사용할 필요가 없습니다. 세 번째 방법으로 새 ​​값을 받고 필요한 경우 새 텍스트를 수정합니다. 그러나 값에 발생하는 정확한 변경 사항을 추적 해야하는 경우 처음 두 가지 방법을 사용합니다. 변경 사항을 듣고 텍스트를 편집 해야하는 경우 세 번째 방법으로 텍스트를 편집합니다.


public void afterTextChanged (편집 가능 s)

이 메소드는 s텍스트 에서 어딘가에 텍스트가 변경되었음을 알리기 위해 호출됩니다 . s이 콜백에서 추가로 변경하는 것은 합법적 이지만 변경하면이 메소드가 재귀 적으로 다시 호출 될 수 있으므로 무한 루프에 빠지지 않도록주의하십시오. (다른 afterTextChanged () 메소드가 이미 다른 변경을 수행하고 오프셋을 무효화했기 때문에 변경이 발생한 위치는 알 수 없습니다. 그러나 여기서 알아야 할 경우 setSpan(Object, int, int, int)in onTextChanged(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 내에서 시작에서 시작하는 카운트 문자가 이전에 길이가 있었던 오래된 텍스트를 대체했음을 알려줍니다. 이 콜백에서을 변경하려고 시도하면 오류가 발생합니다.

참고 URL : https://stackoverflow.com/questions/476848/android-textwatcher-aftertextchanged-vs-textwatcher-ontextchanged

반응형