Eventbus的初步使用

我遇到的问题是: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方法里销毁的
注册:

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

销毁:

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

@Subscribe
public 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里抛数据去,

@Override
protected 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,抛出去就是了



你可能感兴趣的:(Eventbus的初步使用)