마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

showAtLocation으로 띄운 popupWindow의 dismiss 시 에러가 발생합니다.

0 추천

안드로이드 키패드를 만들고 있습니다. 키보드 서비스레이어에서 popupWindow를 띄우게 만들었습니다.

화면이 회전한다거나 스킨을 바꿀시에 popupWindow를 dismiss하고 

다시 새로 로딩하게 했습니다. 

이때 dismiss가 실패 하면서 그림과 같이 2개의 키보드가 뜹니다. 

dismiss시 에러코드는 아래와 같습니다.

반반의 확률로 에러가 발생합니다.

02-26 19:13:53.036: E/0220(1060): popup window dismiss

02-26 19:13:53.036: E/0220(1060): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
02-26 19:13:53.036: E/0220(1060): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4997)
02-26 19:13:53.036: E/0220(1060): at android.view.ViewRootImpl.doDie(ViewRootImpl.java:4320)
02-26 19:13:53.036: E/0220(1060): at android.view.ViewRootImpl.die(ViewRootImpl.java:4307)
02-26 19:13:53.036: E/0220(1060): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:405)
02-26 19:13:53.036: E/0220(1060): at android.view.WindowManagerImpl$CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:174)
02-26 19:13:53.036: E/0220(1060): at android.widget.PopupWindow.dismiss(PopupWindow.java:1470)
02-26 19:13:53.036: E/0220(1060): at com.clingsoft.clingkeypad.KeypadPopup.dismiss(KeypadPopup.java:149)
02-26 19:13:53.036: E/0220(1060): at com.clingsoft.clingkeypad.KeypadRootView.finalize(KeypadRootView.java:163)
02-26 19:13:53.036: E/0220(1060): at com.clingsoft.clingkeypad.LLKeyboard.finalize(LLKeyboard.java:104)
02-26 19:13:53.036: E/0220(1060): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:186)
02-26 19:13:53.036: E/0220(1060): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
02-26 19:13:53.036: E/0220(1060): at java.lang.Thread.run(Thread.java:856)
 

ps) 에러를 잡고, 개발 이슈 1개를 처리해 주실 프리랜서 분이 계시다면 금액을 지불할 의사가 있습니다. 

strive1024 엣 지메일 닷 컴 으로 연락 주세요.

클링소프트 (170 포인트) 님이 2013년 2월 26일 질문

1개의 답변

0 추천
핸들러나 스레드쓰시나여?? 저건 스레드에서 dismiss한경우 나타난경우라.. 아마 반반이라면

 

어느 스레드가 끝날때 혹은 끝나지않을때 dismiss 처리되어서 그런거 같습니다만 자세한건 소스를 제공하셔야할거같네요
건방진프로그래머 (26,630 포인트) 님이 2013년 2월 26일 답변
...