今儿做项目遇到一个问题,就是在一个页面有TabLayout和ViewPager,对应三个可复用的fragment,用使用EventBus的时候,只想特定的某一个页面响应event,但是由于是复用的,所以每一个fragment都是同一个事件响应,比如:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event event) {
......
}
我搜了下网上的做法,好像都是类似在event里面判断,但是在里面不管做什么判断,post一个event都会走同样的操作,也就是会调用三次,因为是注解的方式,不能像Rxbus那样可以根据type不同来注册不同的event,所以只能出此下策:
- 声明三个不同的fragment来继承之前的复用fragment
- 在每个子fragment只做三件事情,初始化,声明时间响应,注册和反注册,而复用fragment则要把仨处逻辑删除,当然有些属性和方法要从private要改成public或者protected
暂时能解决,但是不知道这样做是否合理,有没有大神老哥有更好或者更合理的解决方法和建议,不吝赐教