您的位置:首页 > 其它

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

2016-10-27 16:36 387 查看

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中实现

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


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: