未触发两个片段之间的 EventBus 事件

EventBus event between two fragments not fired

问题: 我正在使用 greenrobotEventBus 来传递一些事件。 不幸的是,对于在两个 fragments 之间传递数据的情况,它对我有用,但事实并非如此。所以事件不会被解雇。

问题:我是不是理解错了这个概念?还是我的代码有错误?

注意:发送事件时两个片段都存在。一个 fragment 是父项,另一个是显示详细信息的子项。

详细片段:

public class DetailFragment extends Fragment {
(...)

refreshButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
EventBus.getDefault().post(new IntentRefresh());
            }
        });
(...)

}

事件总线class:

public class IntentRefresh {

    public IntentRefresh (){}

    public void refreshParent() {

    }

}

父片段:

public class ParentFragment extends Fragment {

    (...)

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

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

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void updateList(IntentRefresh intentRefresh) {
        Toast.makeText(getActivity(), "LUEEEEPT", Toast.LENGTH_SHORT).show();
    }

    (...)
}

Fragment 生命周期比 Activity 生命周期复杂很多。我猜你的 onResume() 并没有像你想象的那样被调用。我建议将您的注册和取消注册移动到 onAttach() 和 onDetach() 方法。

我使用@CaseyB 的回答。它对我有用 perfectly.Like

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (!EventBus.getDefault().isRegistered(this))
        EventBus.getDefault().register(this);
}

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

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(CallbackModel event) {

}