EventBus用于Fragment之间传值

  • step1:引入EventBus
implementation 'org.greenrobot:eventbus:3.1.1'
  • step2:注册事件接收者
    这里MainFragment是要接收MenuFragment发送来的数据,所以我们在MainFragment中的onCreateView()方法中进行注册:
EventBus.getDefault().register(this);
  • step3:建一个Event类
    比如这里想传一个String类型的数据:
public class Event {

    public String data;

    public Event(String data) {
        this.data= data;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data= data;
    }

}

 

  • step4:发送事件
    注:发送事件之前其实还有一步定义事件类型,这里我们传递的数据只有一个类型,所以这一步取消了。
    MenuFragment发送数据给MainFragment,所以我们在MenuFragment中将要传递的数据进行发送事件操作:
EventBus.getDefault().post(new Event(data));
  • step5:接收消息并处理
    在MainFragment中我们接收来自MenuFragment传递过来的数据,并进行对应的处理(注:EventBus 3.0版本这一步必须要写注解@Subscribe (与2.4版本有所区别)):
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event d) {
    tv_main.setText( d.getData());
}

 

通过上面这一步即可完成数据之间的传递,需要注意的是在销毁的时候我们要注销事件接收。

 

  • step6:注销事件接收
//MainFragment.java中
@Override
public void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}


 

你可能感兴趣的:(EventBus用于Fragment之间传值)