アクティビティとフラグメント間の通信に問題なくEventBusを使用しましたが、2つのフラグメントで同じことをするのが疲れたとき、EventBusは特定のイベントのサブスクライバがないことを通知します。ここでFragmentAをサブスクライブするFragmentBからイベントを送信するサンプルの例である:2つのフラグメント間のEventBus通信。サブスクライバエラーなし
サンプルFragmentA(メッセージを受信しない受信機):
public class FragmentA extends Fragment {
private View mView;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(int msg) {/* Do something */};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.a_fragment_layout, container, false);
EventBus.getDefault().register(this);
return mView;
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
}
サンプルFragmentB(送信者):
私が手public class FragmentB extends Fragment {
private View mView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.b_fragment_layout, container, false);
sendMessage(1);
return mView;
}
private void sendMessage(int msg){
EventBus.getDefault().post(msg);
}
}
エラー:
No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
問題はかなり単純なようですが、わかりません。
問題は、あなたがイベント – Selvin
簡単です...または登録する前にメッセージを送る... – MidasLefko
を受ける前に、あなたはonStop打つしなければならない... FragmentAが登録されていない、 – Selvin