В моем приложении я использую 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.
Как я могу это исправить? пожалуйста, помогите мне. Спасибо
@KishoreJethava, как я могу это сделать? можешь мне помочь? пожалуйста
Добавьте это в свой метод onStart() вашего фрагмента - EventBus.getDefault().register(this);
следите за официальным документы
@GaneshKalal, спасибо, братан. все нормально и работай со мной




Попробуйте это работает нормально
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();
}
Вы зарегистрировали
EventBusвActivity?