美文网首页
Fragment 复用时,EventBus的消息多次处理

Fragment 复用时,EventBus的消息多次处理

作者: OldWang12138 | 来源:发表于2021-07-27 12:20 被阅读0次

例: 在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) {

        // 处理消息

        }

}

相关文章

网友评论

      本文标题:Fragment 复用时,EventBus的消息多次处理

      本文链接:https://www.haomeiwen.com/subject/bgfomltx.html