NalYang
10
2021-01-22 01:49:51
1
219

안드로이드 버튼이 종종 고장나는데 문제를 모르겠습니다.


구현하려는 기능은 버튼 클릭시 토스트 메시지가 뜨게 하는 간단한 기능입니다.


토스트 메시지 중복을 처리하려고 이런 함수를 작성하고

fun makeToast(str: String) {
if (mToast == null) {
mToast = Toast.makeText(context, str, Toast.LENGTH_SHORT)
}else
mToast?.setText(str)
mToast?.show()
}


onClick에서 사용합니다.

override fun onClick(view: View?) {
when (view) {
binding.btnStart -> {
makeToast("시작")
}
binding.btnEnd -> {
makeToast("종료")
}
}
}

문제는 버튼이 여러번 눌리면서 토스트 메시지가 뜨지 않는 버그가 생겼습니다.


일정 시간 뒤에는 다시 정상 작동하다가 또 여러번 눌리면 동작하지 않습니다.


에러 메시지는 E/OpenGLRenderer: ReliableSurface: perform returned an error 라고 나오는데, 구글링해도 자료를 찾기가 힘드네요 ㅠㅠ


왜 이런건가요?


0
  • 답변 1

  • 멘탈조각
    1k
    2021-01-22 03:13:24

    cancel하고 show하거나 callback등록해서 isShow 스테이트를 들고있는 식으로 하면 됩니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.