通常实用evenbus都是用来传 回传值,选择它简单的方法,切记如果直接传数据用Intent即可,接下来做个总结。
1.传值需要有发送方,和接收方,通常在(接收方)注册evenbus,先注册:
//注册:
EventBus.getDefault().register(this);
//取消注册evenbus:
@Override
protected void onDestroy() {
super.onDestroy();
if (EventBus.getDefault().isRegistered(this)){
EventBus.getDefault().unregister(this);
}
}
2.接收方写接收数据的方法:
@Subscribe(threadMode = ThreadMode.MAIN)
public void getData(SearchrEvent messageEvent){
dataBeans.addAll(messageEvent.getData());
Log.i("ssssssqq1","jjjjhgjhgjhgjhhgfgh");
}
这个方法是执行在主线程的,通过一个消息类Event来接收数据.
3.接下来写发送方的内容:
//发送通知:
SearchrEvent searchrEvent = new SearchrEvent();
searchrEvent.setData(data);
//发送事件调用这个方法
EventBus.getDefault().post(searchrEvent);
Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
startActivity(intent);
4.even类:举个,相传什么类型的自己定义即可:
public class SearchrEvent {
private List data;
public List getData() {
return data;
}
public void setData(List data) {
this.data = data;
Log.d("flrgt", "setData: "+data);
}
@Override
public String toString() {
return "SearchrEvent{" +
"data=" + data +
'}';
}
}
5.完结撒花。