Fragment-Activity 与事件总线通信
Fragment-Activity Communication with Event Bus
我正在尝试使用 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");
}
MainActivity.java
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());
}
}
BusMessage.java
public class BusMessage {
private String message;
public BusMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
EventBus.getDefault().post(new BusMessage(tab.getText()));
我正在尝试使用 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");
}
MainActivity.java
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());
}
}
BusMessage.java
public class BusMessage {
private String message;
public BusMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
EventBus.getDefault().post(new BusMessage(tab.getText()));