一、AndroidEventBus。
二、問題出現情形。
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中初始化標題會有個延時情況,如果采用第一種方式,則不會顯示標題。