现在我有两个Activity;一个A 一个B。
A和B都在onCreate方法中执行了EventBus.getDefault().register(this);
在B中定义了public void onEventMainThread(String data)方法。
现在A中定义了一个按钮,点击按钮跳转到B并要传递数据,我使用了startActivity的方式启动B,现在我应该如何用EventBus传递参数到B?
在线等!会EventBus的童鞋都来说说.。。只有三个C币不知道怎么获得C币。。。
EventBus是什么东西,我没用过
在前一个Activity注册的时候,把目标的Activity实例化注册,就可以传参数了.
二楼是对的,在发送EventBus post请求之前在发送Activity实例化目标Activity(这样:EventBus.getDefault().register(new 目标Activity());)或者重写一个MainApplication里面(EventBus.getDefault().register(new 目标Activity());)。这样就可以啦。
我用的是EventBus 3.+。从AActivity跳到BActivity并携带参数,你需要做的是,重写AActivity中的onStop()方法。如下:
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().post(new MessageEvent("test"));
}
在BActivity的onCreate()方法中register()。@Subscribe设置接受参数的方法。
可以使用粘性消息,也就是post的时候使用postSticky方法,并且接受端的subscribe注解中的sticky = true,则可以从以前的消息队列中获取粘性消息了,否则很可能导致第二个Activity还没创建完成消息就发送了,等到第二个actvity创建完后收不到消息的情况
第一个Activity
//这里跳转
startActivity(intent);
//发送粘性消息
EventBus.getDefault().postSticky(data);
第二个activity
/**
* 接收消息,这里最重要的是sticky=true
* @param data 自己定义
*/
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
public void eventComing(Data data){
//操作一波...
}