美文网首页
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