Eventbus的初步使用

来源:互联网 发布:安易恢复软件 编辑:程序博客网 时间:2024/05/04 11:02

我遇到的问题是:fragment借助它所依赖的A Activity 开启B Activity,B Activity 返回的数据要传给fragment

startActivityForResult的方式只适合两个Activity之间传递数据,我要做的就是将B Activity传回来的数据

由A Activity的onActiityResult方法接收,并通过EventBus将接收的数据传递给fragment


Android Studio首先添加依赖

compile 'org.greenrobot:eventbus:3.0.0'

在需要接收数据的fragment里注册EventBus

我是在

onCreateView方法里注册的
在ondestroy方法里销毁的
注册:

@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    EventBus.getDefault().register(this);
}

销毁:

@Overridepublic void onDestroy() {    super.onDestroy();    EventBus.getDefault().unregister(this);}
新写
onEventMainThread方法用于接收自定义类WorkerIdEvent的对象,注意必须加上@Subscribe

@Subscribepublic void onEventMainThread(WorkerIdEvent event) {    String msg = event.getMsg();    LogUtils.e("回到fragment中mag===="+msg);    //被EventBus由其他Activity传进来的数据就是这个msg}
我的
WorkerIdEvent类是如此定义的(不用继承啥,
onEventMainThread方法参数只要是个object就行),因为我只需要接收一个String类型的数据所以并不复杂
public class WorkerIdEvent {    private String mMsg;    public WorkerIdEvent(String msg) {        mMsg = msg;    }    public String getMsg(){        return mMsg;    }}
好了接收数据的fragment中的设置搞定了,接着去Activity里抛数据去,
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == 1010 && resultCode == 1001 && null != data) {        //獲取了worktype        String workerTypeId;        workerTypeId = data.getStringExtra("ID");        EventBus.getDefault().post(new WorkerIdEvent(workerTypeId));    }}
我想要的数据就是这个
workerTypeId,抛出去就是了



0 0
原创粉丝点击