例: 在ViewPager中加入两个AFragment .
AFragment中的onStart() 和onStop()注册/反注册了EventBus;
onStart() --> EventBus.getDefault().register(this)
onStop() --> EventBus.getDefault().unregister(this)
问题:
// 这样如果有消息发过来就会执行两次
@Subscriber(tag = EventType.DEFAULT_TAG, mode = ThreadMode.MAIN)
fun eventClickItem(goodsItem: GoodsItem) {
// 处理消息
}
解决:
我们创建Fragment的时候
fun newInstance(jumpType: Int): ProductDeclaringFragment {
val bundle = Bundle()
// 这里携带个数据, 也可以加个Tag
bundle.putInt(Constants.JUMP_TYPE, jumpType)
val fragment = ProductDeclaringFragment()
fragment.arguments = bundle
return fragment
}
private var mJumpType =0
在Fragment中onCreateView方法里拿到传过来的数据
val bundle =arguments
mJumpType = bundle!!.getInt(Constants.JUMP_TYPE)
然后接受消息的地方改下就好了
@Subscriber(tag = EventType.DEFAULT_TAG, mode = ThreadMode.MAIN)
fun eventClickItem(goodsItem: GoodsItem) {
if(mJumpType == 0) {
// 处理消息
}
}
网友评论