Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- error
- Github
- studio
- Gradle
- ADB
- 안드로이드
- 코루틴
- MVVM
- Kotlin
- 코틀린
- coroutine
- 에러
- WebView
- RecyclerView
- image
- dart
- 레트로핏
- 안스
- GIT
- build
- Retrofit
- 의존성주입
- 안드로이드 스튜디오
- 깃헙
- viewpager
- Android
- 스튜디오
- 유튜브
- 웹뷰
- 안드로이드스튜디오
Archives
- Today
- Total
코딩하는 일용직 노동자
Must be called from main thread of fragment host 에러 처리 본문
안드로이드 개발중 경험한 에러와 해결방법을 공유합니다.
앱실행 중에 아래와 같은 에러가 발생하면서 앱이 죽었습니다.
java.lang.IllegalStateException: Must be called from main thread of fragment host
Fragment에서 부모 Activity로 ViewPager의 페이지 이동을 시키려고 하는데 에러가 났습니다.
public class AndroidBridge { @JavascriptInterface public void OnAppEvent(String data) { switch (event) { case "move_to_main": Fragment_Main.getInstance().mViewPager.setCurrentItem(1); break; } ...
에러 메세지를 보니 부모 액티비티의 메인 쓰레드(UI 쓰레드)에서 호출되야 한다고 합니다.
지금은 액티비티가 아닌 Fragment의 쓰레드에서 호출되어서 에러가 발생했습니다.
부모 액티비티의 메인 쓰레드(UI 쓰레드)에서 실행되게 하려면 아래처럼 runOnUiThread() 함수로 감싸주면 됩니다.
getActivity().runOnUiThread(new Runnable() { @Override public void run() { Fragment_Main.getInstance().mViewPager.setCurrentItem(1); } });
'안드로이드' 카테고리의 다른 글
The minCompileSdk (31) specified in adependency's AAR metadata 에러 수정사례. (0) | 2021.10.02 |
---|---|
안드로이드 인앱결제를 위한 환경셋팅 (3) | 2021.09.26 |
안드로이드 스튜디오 한글깨짐 for Mac (2) | 2021.09.03 |
구글 플레이스토어 새로운 앱 서명 키 관리 (0) | 2021.09.02 |
Release/Dev (상용/개발) 패키지, 앱이름 분리하기 (0) | 2021.08.01 |