투케이2K

544. (kotlin/코틀린) [간단 소스] 안드로이드 EditText 에딧트 텍스트 addTextChangedListener 사용해 실시간 텍스트 변경 상태 확인 본문

Kotlin

544. (kotlin/코틀린) [간단 소스] 안드로이드 EditText 에딧트 텍스트 addTextChangedListener 사용해 실시간 텍스트 변경 상태 확인

투케이2K 2025. 2. 3. 19:02

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : EditText / addTextChangedListener

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

inputPhoneEditText!!.addTextChangedListener(object : TextWatcher {
    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        S_Log.d("PHONE_BEAFORE", inputPhoneEditText!!.text.toString())
    }
    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        S_Log.w("PHONE_CHANGE", inputPhoneEditText!!.text.toString())

        // [정규식 수행 숫자만 허용 : 한글, 영문, 특수 문자 등 모두 제거]
        var phoneText = inputPhoneEditText!!.text.toString()

        var regPhoneText = C_Util.getRexpNumberString(phoneText)
        regPhoneText = regPhoneText.trim().replace(" ", "")

        if (phoneText.length != regPhoneText.length){ // [제거 된 문자가 있는 경우]

            Handler(Looper.getMainLooper()).postDelayed({

                inputPhoneEditText!!.setText(regPhoneText.trim()) // [뷰 갱신 수행]

            },1000)

        }
    }
    override fun afterTextChanged(p0: Editable?) {
        S_Log.e("PHONE_AFTER", inputPhoneEditText!!.text.toString())
    }
})

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

>>>>>>>>>> [모바일 가상 키패드 활성 Key 번호 입력 수행] >>>>>>>>>>

I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 0
D/PHONE_BEAFORE: 
W/PHONE_CHANGE: 0
E/PHONE_AFTER: 0


I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 1
D/PHONE_BEAFORE: 0
W/PHONE_CHANGE: 01
E/PHONE_AFTER: 01


I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 0
D/PHONE_BEAFORE: 01
W/PHONE_CHANGE: 010
E/PHONE_AFTER: 010


>>>>>>>>>> [모바일 가상 키패드 활성 Key 번호 지우기 수행] >>>>>>>>>>

I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 0
D/PHONE_BEAFORE: 010
W/PHONE_CHANGE: 01
E/PHONE_AFTER: 01


I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 1
D/PHONE_BEAFORE: 01
W/PHONE_CHANGE: 0
E/PHONE_AFTER: 0


I/ViewRootImpl@bc2e4b4[TestActivity]: ViewPostIme key 0
D/PHONE_BEAFORE: 0
W/PHONE_CHANGE: 
E/PHONE_AFTER: 


>>>>>>>>>> [다른 앱 및 화면에서 휴대폰 번호 복사 및 카드 등록 팝업창에 붙여 넣기 수행] >>>>>>>>>>

D/PHONE_BEAFORE: 
W/PHONE_CHANGE: 010-1234-5678  --------------------------------> 하이픈 특수 문자 포함 된 휴대폰 번호로 붙여 넣기
E/PHONE_AFTER: 010-1234-5678


>>>>>>>>>> [정규식 사용해 숫자 Number 형태 제외한 모든 문자 제거 수행 실시] >>>>>>>>>>

D/PHONE_BEAFORE: 010-1234-5678
W/PHONE_CHANGE: 01012345678 -----------------------------> 특수 문자 정상 제거 및 표시 수행
E/PHONE_AFTER: 01012345678

// --------------------------------------------------------------------------------------

 

반응형
Comments