如何使用eventBus

    博主是个菜鸟,之前写项目的时候fragment和activity混合使用,遇到了一个问题,就比如说fragmentA是隶属于activityA的,而我现在从fragmentA跳到activityB,那么问题就来了:我在activityB从后台获取数据,想要刷新fragmentA中listView的数据,但是activity是不能通过tag来获取到fragmentA的对象的,因为fragmentA是隶属于activityA的,侬晓得伐。。所以说你在fragmentA中写一个upData方法,在activityB中调用时行不通的,所以在老大的提醒下我想到了有一个之前没怎么解除过的EventBus!

    说实话,确实是很强啊,只需要下载一个jar包,添加依赖,然后就以我们说的fmA,aA和aB来说,只需要在fmA注册和反注册EventBus;然后复写 onEventMainThread方法来接受aB发出的消息。当然了,你需要在aB里发送一个消息,然后这个消息需要你new一个自定义实体类来传递,下面贴上代码:


fmA:

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    EventBus.getDefault().register(this);
}

 
  
public void onEventMainThread(AnyEvent event) {
    String msg = "onEventMainThread收到了消息:" + event.getVipInnerData();
    Toast.makeText(getContext(), msg, Toast.LENGTH_LONG).show();
}



@Override
public void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}




aB:

EventBus.getDefault().post(new MsgCount("消息"));



MsgCount:

public class MsgCount {
    private String mMsg;
    public MsgCount() {

    }

    public MsgCount(String msg) {
        mMsg = msg;
    }

    public String getMsg() {
        return mMsg;
    }

    public void setMsg(String msg) {
        mMsg = msg;
    }
}

好了, 就此结束,博主只是个码农,并不是程序员,为成为一名真正的程序员一起奋斗吧大家!

你可能感兴趣的:(如何使用eventBus)