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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值