使用Eventbus首先需要导入依赖
compile 'org.greenrobot:eventbus:3.0.0'
然后创建一个bean
在接收的类里面启用Eventbus
EventBus.getDefault().register(this);
在发送类写入
EventBus.getDefault().post(new FirstEvent("这是要发送的内容"));
最后在接收类写入
@Subscribe(threadMode = ThreadMode.MAIN) public void MessageEvent(FirstEvent event) { String msg = "我收到的消息是:" + event.getMsg(); mtv.setText(msg);
}
event.getMsg 就是你接收的内容@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); }
最后一步就是在接收类里面
@Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//反注册EventBus }
最后附上两个activity
这个是接收方的activity
public class BActivity extends Activity {
private TextView mtv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bactivity);
EventBus.getDefault().register(this);
Button mBtn = (Button) findViewById(R.id.b_mBtn);
mtv = (TextView) findViewById(R.id.b_mTv);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(BActivity.this, CActivity.class));
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void MessageEvent(FirstEvent event) {
String msg = "我是收到的消息:" + event.getMsg();
Log.d("harvic", msg);
mtv.setText(msg);
}
@Override
protected void onDestroy(){
super.onDestroy();
EventBus.getDefault().unregister(this);//反注册EventBus
}
}
下面是发送发的activity
public class CActivity extends Activity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cactivity); Button c_mBtn = (Button) findViewById(R.id.c_mBtn); c_mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().post(new FirstEvent("内容是")); finish(); } }); } }
我这里传的是一个字符串 所以我的bean是public class FirstEvent { private String mMsg; public FirstEvent(String msg) { // TODO Auto-generated constructor stub mMsg = msg; } public String getMsg(){ return mMsg; }