所以我的情况不典型,我已经做了很多研究,浪费了一天的时间。这是我的情景。我有一个活动,此活动包含一个片段(自定义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>