Android在片段无效时获取EventBus事件

时间:2016-07-04 19:37:58

标签: android

在活动onBackPressed()上定义事件类和事件后,我无法在片段上获取事件,我的一些活动在这个片段之上打开,它是MainActivity的子节点。我想从其他开场活动中发布一些事件,但是我的代码在Fragment上没有得到这个事件,但是我可以从活动onBackPressed()发布事件

SignalActivityMarketDetailStateEvents类:

public class SignalActivityMarketDetailStateEvents {
    private boolean activityMarketDetailState;

    public SignalActivityMarketDetailStateEvents(boolean activityMarketDetailState) {
        this.activityMarketDetailState = activityMarketDetailState;
    }

    public boolean isActivityMarketDetailState() {
        return activityMarketDetailState;
    }
}

ActivitySecond:

@Override
public void onBackPressed() {
    EventBus.getDefault().post(new SignalActivityMarketDetailStateEvents(true)); 
}

获取活动的片段:

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(SignalActivityMarketDetailStateEvents event) {
    Log.e("EventBus ","Received");
}

@Override
public void onStart() {
    EventBus.getDefault().register(this);
    super.onStart();
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

@Override
public void onResume() {
    EventBus.getDefault().register(this);
    super.onResume();
}

在我的片段中,这一行在发布事件后不起作用:

Log.e("EventBus ","Received");

1 个答案:

答案 0 :(得分:1)

您并未注意到这些活动的生命周期。您可以使用粘性事件(postSticky)。或者在某些单例中更新状态并在onResume中读取该状态。