當(dāng)前Activity發(fā)送事件給上一個(gè)Activity
當(dāng)前的Activity關(guān)閉后給打開(kāi)它的上一個(gè)Activity發(fā)送事件,這個(gè)類(lèi)似與startActivityForResult()方法,能夠?qū)崿F(xiàn)頁(yè)面關(guān)閉的回調(diào)
首先我們?cè)诘谝粋€(gè)Activity中注冊(cè)注銷(xiāo)訂閱者事件
其次我們定義訂閱者方法接收事件
EventBusAActivity 代碼如下
public class EventBusAActivity extends MyBaseActivity {
@BindView(R.id.tv)
TextView tv;
@BindView(R.id.btn)
Button btn;
@Override
public void initUI() {
setContentView(R.layout.activity_event_bus_a);
ButterKnife.bind(this);
//EventBus使用注冊(cè)
EventBus
.getDefault()
.register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//EventBus注銷(xiāo)
EventBus
.getDefault()
.unregister(this);
}
//定義方法接收消息.
//threadMode = ThreadMode.MAIN
@Subscribe()
public void onEventBusMessage(String msg) {
String concat = msg.concat("-------->");
LogUtils.i(concat);
showToast(concat);
tv.setText(concat);
}
@OnClick(R.id.btn)
public void onViewClicked() {
startActivity(EventBusBActivity.class);
}
}
我們點(diǎn)擊按鈕,跳轉(zhuǎn)到一個(gè)新的Activity
EventBusBActivity 代碼如下:
public class EventBusBActivity extends MyBaseActivity {
@BindView(R.id.et)
EditText et;
@BindView(R.id.btn_close)
Button btnClose;
@Override
public void initUI() {
setContentView(R.layout.activity_event_bus_b);
ButterKnife.bind(this);
}
@OnClick(R.id.btn_close)
public void onViewClicked() {
//發(fā)送消息
EventBus
.getDefault()
.post(et.getText().toString().concat("eventbus is coming backing!"));
finish();
}
}
我們?cè)贓ventBusBActivity 輸入框中輸入內(nèi)容,然后點(diǎn)擊按鈕發(fā)布事件,并關(guān)閉當(dāng)前頁(yè)面
此時(shí)回到EventBusAActivity中接收到事件并做處理:
日志輸入結(jié)果:
EventBusAActivity
.onEventBusMessage(L:48):
593066063eventbus is coming backing!-------->
ok,到此我們已經(jīng)實(shí)現(xiàn)在頁(yè)面關(guān)閉的時(shí)候,使用EventBus發(fā)布事件給上個(gè)頁(yè)面!