Android EventBus在Fragment中不起作用的解決方法

一、AndroidEventBus。

android平臺事件總線框架。介紹:https://github.com/bboyfeiyu/AndroidEventBus/blob/master/README-ch.md


二、問題出現情形。

AndroidEventBus在Fragment中註冊,由其他地方向Fragment中post事件。


三、問題出現原因。

由其他地方向Fragment post事件的時候,Fragment還未初始化,也即AndroidEventBus在此Fragment中還未註冊,所以收不到事件。


四、問題解決辦法。

1.在程序中想辦法先初始化此Fragment,比如app中首頁四個Tab分頁,由第一個分頁向第三個分頁post事件時,如果剛進入app且沒有操作的情況下,第三個Fragment一般都是未初始化的,這種情況可以在進入默認第一個分頁時先進入第三個分頁,然後立馬再切換到第一個分頁,這樣用戶是看不出切換過程的,而第三個Fragment也初始化了。示例代碼如下:

setTabSelection(2);//先選擇第三個Tab分頁
setTabSelection(0);//然後立馬切換到默認的第一個Tab分頁
在這之後在post事件,應該就沒問題了。

2.採用延時post的形式。即先切換到要post事件的Fragment,等待幾十毫秒後再post事件,這樣既可解決未初始化問題。


五、特殊情況

在這樣有個特殊情況,如果在Fragment中使用了TabLayout,則只能採用延時的方式。因爲TabLayout在Fragment中初始化標題會有個延時情況,如果採用第一種方式,則不會顯示標題。

Fragment中使用TabLayout參考:http://blog.csdn.net/wblyuyang/article/details/50501955

發佈了62 篇原創文章 · 獲贊 23 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章