Search code examples
androidgreenrobot-eventbus

EventBus: @Subscribe - not receive message


compile 'org.greenrobot:eventbus:3.0.0'

Here my frament subscriber:

public class FragmentSort extends Fragment {

@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        EventBus.getDefault().register(this);
        View rootView = inflater.inflate(R.layout.fragment, container, false);
        return rootView;
}


 @Subscribe
    public void onChangeFilter(Integer categoryId) {
      // NOT CALL
    }

Here my main frament that send message:

public class MainFragment extends Fragment {

    private void searchViewPostAction(Integer categoryId) {
        searchView.clearFocus();
        EventBus.getDefault().post(new CategoryFilterEvent(categoryId));
    }
}

Here my POJO:

public class CategoryFilterEvent {
    private Integer categoryId;

    public CategoryFilterEvent(Integer categoryId) {
        this.categoryId = categoryId;
    }

}

Method MainFragment.searchViewPostAction() is call but message not receive. Method FragmentSort.onChangeFilter() is NOT call.

Why?


Solution

  • Add a getter method to CategoryFilterEvent

    public int getCategoryId() {
        return categoryId;
    }
    

    And change:

    @Subscribe
    public void onChangeFilter(Integer categoryId) {
      // NOT CALL
    }
    

    to:

    @Subscribe
    public void onChangeFilter(CategoryFilterEvent event) {
      // THIS WILL BE CALLED
        int categoryId = event.getCategoryId();
    }