EventBus用于Fragment(Activity)之间传值

  • 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);
    }

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值