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 사용하는게 간단해서 이걸 사용 했다.

 

참고

https://onlyfor-me-blog.tistory.com/189

https://velog.io/@ssook1222/%EC%98%A4%EB%8A%98%EC%9D%98-%EC%97%90%EB%9F%AC-java.lang.RuntimeException-Cant-toast-on-a-thread-that-has-not-called-Looper.prepare

https://jwsoft91.tistory.com/37

728x90

+ Recent posts