有这样一个问题,从A页面跳转到B页面,b页面点击搜索框跳转到c页面,c页面选择地点调回A页面然后是刷新数据(比如textview),我在此处是用eventbus进行粘性事件传递的,这里要提醒的是,eventbus使用完要remove掉,如下:
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void onReceiveMessage(ZhanDianInfoMessage msg){
if (!TextUtils.isEmpty(msg.getEndname())){
Log.d("lwp","my name:"+msg.getEndname());
tvMudidi.setText(msg.getEndname());
mEndStation = new CoachEndItem.StationsBean();
mEndStation.setName(msg.getEndname());
mEndStation.setEndSrc(msg.getEndsrc());
mEndStation.setCode(msg.getEndcode());
ZhanDianInfoMessage previousEvent = EventBus.getDefault().removeStickyEvent(ZhanDianInfoMessage.class);
if(previousEvent!=null){
EventBus.getDefault().removeStickyEvent(previousEvent);
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void onReceiveMessage(QishiZhanDianMessage msg){
if (!TextUtils.isEmpty(msg.getStartname()) || !TextUtils.isEmpty(msg.getStartcode()) || !TextUtils.isEmpty(msg.getStartsrc())){
if (msg.getStartname().equals("aa")){
mEndStation = null;
tvMudidi.setText("目的地");
}
QishiZhanDianMessage previousEvent = EventBus.getDefault().removeStickyEvent(QishiZhanDianMessage.class);
if(previousEvent!=null){
EventBus.getDefault().removeStickyEvent(previousEvent);
}
}
}
这里我出现的问题是,由于目的地站的数据是要出发站进行控制的,所以当我选择了目的站再选择出发站回到主页的时候目的站的信息是要清除的,也就有了mEndStation = null;的操作,然后我再去点目的地站点选择数据过来由于QishiZhanDianMessage 的消息没有remove掉,导致mEndStation 为空取不到数据,remove即可。