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){
//