Otto进行事件分发(Activity 与Activity与Fragment之间传递数据)

1. build.gradle添加如下引用
compile 'com.squareup:otto:1.3.5'
2. 定义Otto帮助类 返回bus对象

public class OttoBusHelper {

    private OttoBusHelper(){}

    private static Bus bus;

    public static Bus getInstance(){
        if(bus==null) {
            synchronized (OttoBusHelper.class) {
                if (bus==null){
                    bus = new Bus();
                }
            }
        }
        return bus;
    }
}
3. 定义一个事件参数传递类
package com.choice.zlc.ottodemo;

/**
 * Created by zlc on 2016/10/27.
 * 参数传递事件类
 */

public class BusAction {

    private String s;

    public BusAction(String s){
        this.s = s;
    }

    public String getS() {
        return s;
    }
}
4. Activity中实现
  1. MainActivity中实现
订阅事件

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        OttoBusHelper.getInstance().register(this);   //订阅事件
        initView();
    }

@Subscribe:这个在调用了register后有效,表示订阅了一个事件,并且方法必须用public修饰的,方法名随意取,重点是参数,它是根据你的参数进行判断
    @Subscribe
    public void setTextString(BusAction action){
        mText.setText(action.getS()+"");
    }

 取消订阅
     @Override
     protected void onDestroy() {
        super.onDestroy();
        OttoBusHelper.getInstance().unregister(this);
     }
  1. SecondActivity中实现
    mBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    OttoBusHelper.getInstance().post(new BusAction("这是第二个页面传递过来的"));      //发布事件
                    finish();
                }
    });
5. 常用方法

register(Object o):注册,注册以后可以订阅事件
unregister(Object o)注销.放弃对之前的订阅的所有事件
post(Object o)发布事件,会被有Subscribe注解的方法获取到

6. 联系方式

QQ:1509815887
email:zlc921022@163.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值