订阅片段时发生事件总线错误

时间:2018-06-10 13:57:39

标签: android android-fragments android-viewpager greenrobot-eventbus-3.0

所以我的情况不典型,我已经做了很多研究,浪费了一天的时间。这是我的情景。我有一个活动,此活动包含一个片段(自定义ViewPager)。在我的Cutom ViewPager中,它为片段(子)保留了另一个。有一个菜单按钮,触发片段事务,将添加另一个片段(常规片段),用于发布一些项目。 发布后会触发onBackPressed弹出此片段并将视图返回给ViewPager。我想要的是在片段ViewPager的子片段和(用于发布项目的常规片段)之间发送布尔值。

在我的第一个孩子片段中,我在ViewPager片段中注册并使用此注册和取消订阅

 @Subscribe
    public void onEvent(AnnouncementPostListener event){
        this.isJustAdded = event.isAddedByUser;
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (!EventBus.getDefault().isRegistered(getActivity())) {
            EventBus.getDefault().register(this);
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        //We use onDetached method that remove/detach the recycler adapter with its listeners
        //This is to ensure that before the user exit the app all listeners should be remove to avoid bandwidth consumption and errors
        //To make sure that if this fragment gets remove all listeners and 
   adapter as well needs to be remove
       if (EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().unregister(this);
        }

    }

在片段中发布我订阅的内容并取消订阅此代码。

            EventBus.getDefault().postSticky(new 
            AnnouncementPostListener(true));

  @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (!EventBus.getDefault().isRegistered(getActivity())) {
            EventBus.getDefault().register(this);
        }

    }

    @Override
    public void onDetach() {
        super.onDetach();
        if (EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().unregister(this);
        }
    }

我的POJO课程

public class AnnouncementPostListener {
    public final boolean isAddedByUser;
    public AnnouncementPostListener(boolean status){
        this.isAddedByUser = status;
    }
}

请注意,Fragment ViewPager是第一个显示的,并且有一个动作按钮,它将添加新的片段以便发布,然后在任务完成后立即触发活动onbackpressed以返回Fragment ViewPager的视图。 / p>

0 个答案:

没有答案
相关问题