Event bus 片段活动与事件总线的通信

Event bus 片段活动与事件总线的通信,event-bus,Event Bus,我正试图使用EventBus将文本从我的tabLayout发送到Fragment,但由于未知原因,事件未被触发。我在堆栈跟踪中得到了这个错误。我不明白为什么订户没有注册 D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent Fragment.java @Override public void onStart() { super.o

我正试图使用
EventBus
将文本从我的
tabLayout
发送到
Fragment
,但由于未知原因,事件未被触发。我在堆栈跟踪中得到了这个错误。我不明白为什么订户没有注册

D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
Fragment.java

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

    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }
    @Subscribe
    public void receivedQueryMessage(BusMessage message){
        Log.d("MYLOG", "message");

    }
 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                if (tab.getText() != null) {
                    EventBus.getDefault().post(tab.getText());
                }
            }
public class BusMessage {
    private String message;

    public BusMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
MainActivity.java

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

    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }
    @Subscribe
    public void receivedQueryMessage(BusMessage message){
        Log.d("MYLOG", "message");

    }
 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                if (tab.getText() != null) {
                    EventBus.getDefault().post(tab.getText());
                }
            }
public class BusMessage {
    private String message;

    public BusMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
BusMessage.java

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

    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }
    @Subscribe
    public void receivedQueryMessage(BusMessage message){
        Log.d("MYLOG", "message");

    }
 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                if (tab.getText() != null) {
                    EventBus.getDefault().post(tab.getText());
                }
            }
public class BusMessage {
    private String message;

    public BusMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

成功了。但是,只有在切换选项卡后才会调用该事件。我在第一次发射时没有得到这个事件。有什么办法吗?它会在切换选项卡后触发事件,因为您在选项卡SelectedListener中触发事件,当然,它不会在第一次发射时触发事件,因为您不会在第一次发射时触发事件(很明显是您的船长)好的。我将这行代码移到了onCreate,但得到了相同的结果。您在onStart()方法中订阅事件,所以应该在订阅后触发事件,类似于int currentTab=tabLayout.getSelectedTabPosition();EventBus.getDefault().post(新的总线消息(tabLayout.getTabAt(currentTab.getText());