Android EventBus가 Fragment에서 작동하지 않는 해결 방법
1129 단어 Android 메모
android 플랫폼 이벤트 버스 프레임워크입니다.소개:https://github.com/bboyfeiyu/AndroidEventBus/blob/master/README-ch.md
2. 문제 발생 상황.
Android EventBus는 Fragment에 등록되어 있으며 다른 방향의 Fragment에서post 이벤트가 발생합니다.
3. 문제 발생 원인.
다른 방향에서 Fragment post 이벤트를 시작할 때 Fragment가 초기화되지 않았습니다. 즉, 안드로이드 이벤트버스가 이 Fragment에 등록되지 않았기 때문에 이벤트를 받을 수 없습니다.
4. 문제 해결 방법.
1. 프로그램에서 이 Fragment을 초기화하는 방법을 강구한다. 예를 들어 앱의 첫 페이지에 네 개의 탭이 있고 첫 번째 페이지에서 세 번째 페이지post 이벤트가 있을 때 만약에 앱에 들어갔을 때 조작이 없는 상황에서 세 번째 Fragment는 일반적으로 초기화되지 않은 것이다. 이런 경우 기본 첫 번째 페이지에 들어갈 때 세 번째 페이지로 들어가고 바로 첫 번째 페이지로 전환할 수 있다.이렇게 하면 사용자는 전환 과정을 볼 수 없고 세 번째 Fragment도 초기화된다.예제 코드는 다음과 같습니다.
setTabSelection(2);// Tab
setTabSelection(0);// Tab
그 다음에post사건에서 문제 없을 거예요.2. 지연post의 형식을 채택한다.즉, 먼저 Post 이벤트를 할 Fragment로 전환하고 몇 십 밀리초를 기다린 후에 Post 이벤트를 선택하면 초기화되지 않은 문제를 해결할 수 있습니다.
5. 특수 상황
이 경우 Fragment에서 TabLayout을 사용한 경우 지연 시간만 적용할 수 있습니다.TabLayout이 Fragment에서 제목을 초기화하는 데 지연이 있을 수 있기 때문에 첫 번째 방식을 사용하면 제목이 표시되지 않습니다.
Fragment에서 TabLayout 참조 사용:http://blog.csdn.net/wblyuyang/article/details/50501955