728x90
Toast 를 사용하다가 can't toast on a thread that has not called looper.prepare() 에러가 나오면서 App 비정상 종료다 되었다.
구글링 했더니 UI 스레드가 아닌 스레드에서 토스트 창을 띄우려고 해서 발생한 문제 라고 한다.
//기존 사용 에러 발생
Toast.makeText(Context, "Test", Toast.LENGTH_SHORT).show()
//해결 방법 1
val handler = Handler(Looper.getMainLooper())
handler.postDelayed(Runnable { Toast.makeText(Context, "Test", Toast.LENGTH_SHORT).show() }, 0)
//해결 방법 2
runOnUiThread{ Toast.makeText(Context, "Test", Toast.LENGTH_SHORT).show() }
위에 코드들 처럼 해결하면 잘된다.
runOnUiThread 사용하는게 간단해서 이걸 사용 했다.
참고
728x90
'안드로이드' 카테고리의 다른 글
안트로이드 코틀린 / 지연 실행, 딜레이 실행, n초뒤 실행 (1) | 2022.01.26 |
---|---|
안드로이드 코틀린 / 문자열 공백 제거, 대문자 변경 하기, replace, uppercase (0) | 2022.01.25 |
안드로이드 코틀린 / 날짜, 시간, 계산 하기 (0) | 2022.01.14 |
안드로이드 코틀린 / layout_constraintheight_max, constrainMaxHeight 변경 하기, constraintSet (0) | 2021.12.08 |
안드로이드 코틀린 / 동적으로 리니어 레이아웃 weight 변경하기, set Dynamic weight Kotlin (0) | 2021.10.06 |