一、AndroidEventBus。
android平台事件总线框架。介绍:/bboyfeiyu/AndroidEventBus/blob/master/
二、问题出现情形。
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参考:/wblyuyang/article/details/50501955