Как использовать EventBus во фрагменте?

В моем приложении я использую fragment в Activity, и я хочу, чтобы при запуске одного кода в fragment вызывали некоторые коды в Activity.

Я пишу ниже коды, но при загрузке данных не запускаю код activity.!

Коды фрагментов:

    public void loadRecentPosts() {
        ApiUtils.getApiInterface().getRecentPosts(AppConstant.DEFAULT_PAGE).enqueue(new Callback<List<Post>>() {
            @Override
            public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
                if (response.isSuccessful()) {

                    if (!recentPostList.isEmpty()) {
                        recentPostList.clear();
                    }
                    recentPostList.addAll(response.body());
                    if (recentPostList.size() > 0) {
                        recentPostAdapter.notifyDataSetChanged();
                        EventBus.getDefault().post(new LoadMainDataEvent());
                    }
                } else {
                    showEmptyView();
                }
                pbSectionLoader.setVisibility(View.GONE);
            }

            @Override
            public void onFailure(Call<List<Post>> call, Throwable t) {
                showEmptyView();
                t.printStackTrace();
            }
        });
    }
}

Код активности:

@Subscribe (threadMode = ThreadMode.MAIN)
public void onLoadMainDataEvent(LoadMainDataEvent loadMainDataEvent){
    Toast.makeText(activity, "OK", Toast.LENGTH_SHORT).show();
}

Я хочу, чтобы при получении данных с сервера в fragment запускал коды на странице activity.

Как я могу это исправить? пожалуйста, помогите мне. Спасибо

Вы зарегистрировали EventBus в Activity?

Kishore Jethava 26.07.2018 09:12

@KishoreJethava, как я могу это сделать? можешь мне помочь? пожалуйста

Hock 26.07.2018 09:12

Добавьте это в свой метод onStart() вашего фрагмента - EventBus.getDefault().register(this);

Ganesh K 26.07.2018 09:13

следите за официальным документы

Kishore Jethava 26.07.2018 09:13

@GaneshKalal, спасибо, братан. все нормально и работай со мной

Hock 26.07.2018 09:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
1 105
1

Ответы 1

Попробуйте это работает нормально

FragmentClass.java

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if (!EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().register(this);
     }
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageBusEvent event) {
}

@Override
public void onDestroy() {
        //unregister event bus
        EventBus.getDefault().unregister(this);
        super.onDestroy();
}

Другие вопросы по теме