EventBus не обновляет текстовое представление или кнопку и не показывает никаких ошибок?

Я комментирую два фрагмента MyActivity, когда событие запускается из FragmentA (при нажатии кнопки). Я хочу изменить статус кнопки FragmentB на включенное значение true и setText("новый текст") textview, которые находятся во FragmentB, когда я запускаю вывод моего приложения не показывает ошибок, но не вносит никаких изменений, вот мой фрагмент, который запускает событие

    Fragment A
        ...//some code
         @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_a, container, false);
        ...//more code inside onCreateView
          btnChange.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
        //HERE I POST THE EVENT
                    EventBus.getDefault().post(new ButtonEvent(true));
//   HERE I PUT SOUT TO SHOW IF EVENT IS FIRED
                    System.out.println("YOU FIRED THE EVENT");// THIS MSG IS SHOWN CORRECTLY
        }
      });
}

    @Subscribe
    public void onEvent(ButtonEvent event){

    }

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

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

вот фрагмент B

 FragmentB extends Fragment{
...//some code

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_b, container, false);
 btnNuevoMed= (Button) rootView.findViewById(R.id.btnNuevoMed);
    btnNuevoMed.setEnabled(false);
    txtMed= (TextView)rootView.findViewById(R.id.txtMed);
//...some other code
}
//HERE IS MI SUBSCRIBER
@Subscribe
public void onEvent(ButtonEvent event){
// HERE I PUT A SOUT TO SHOW IF REACH THE METHOD
 System.out.println("YOU ARE HEREEEEE");  //BUT NEVER REACH THIS METHOD . WHY?
    btnNuevoMed.setEnabled(event.status);
    btnNuevoMed.setText("hELLOOO");
    txtMed.setText("Modification Success");
}
 @Override
  public void onStart() {
    super.onStart();
    if (!EventBus.getDefault().isRegistered(getActivity())) {
      EventBus.getDefault().register(this);
    }
  }

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

это моя кнопка xml

 <TextView
        android:id="@+id/txtMed"
        android:text="MEDICACION"
        style="@style/textoTitulos"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"/>

 <Button
        android:text="Nuevo Boton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnNuevoMed"

        />

Я использую Eventbus 3.0.0. Что не так с моим кодом? как я могу решить эту проблему? Почему я не могу добраться до метода слушателя? заранее спасибо..

1 ответ

Попробуй это:

Во Фрагменте А пост-событие, подобное этому

EventBus.getDefault().postSticky(new ButtonEvent(true));

Во Фрагменте B зарегистрируйтесь так:

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEvent(ButtonEvent event){
    //
Другие вопросы по тегам