I'm implementing EventBus lib
to pass and get data from any class or fragment and also subscribed an method to get instant changed data... But I got the following error message:
org.greenrobot.eventbus.EventBusException: Subscriber class java.lang.Boolean and its super classes have no public methods with the @Subscribe annotation
I have subscribed method as github showed here
Code snippet
public class ItemFragment extends Fragment {
View view;
String data;
RecyclerView recyclerView;
CategoryAdapter itemAdapter;
List<Category.Items> list;
private String TAG = getClass().getName();
public static ItemFragment newInstance(String detail) {
Bundle args = new Bundle();
ItemFragment fragment = new ItemFragment();
args.putString("data", detail);
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.cat_recy, container, false);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
data = getArguments().getString("data");
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getEventBusData(MessageEvent messageEvent) {
if (messageEvent != null) {
Category.Items itemClass = EventBus.getDefault().getStickyEvent(Category.Items.class);
Log.e("eventBus", itemClass.getItem_name() + " " + itemClass.getPrice() + " " + itemClass.getCount());
}
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
I have only posted the required code for adopter as the rest of the code is not needed here
adapter
@Override
public void onBindViewHolder(final Holder holder, int position) {
final Category.Items category = list.get(position);
holder.catPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventBus.getDefault().postSticky(category);
}
}
update activity class
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getEventBusData(Items messageEvent) {
if (messageEvent != null) {
Items itemClass = EventBus.getDefault().getStickyEvent(Items.class);
Log.e("eventBus", itemClass.getItem_name() + " " + itemClass.getPrice() + " " + itemClass.getCount());
calculation();
}
}
new error
org.greenrobot.eventbus.EventBusException: Subscriber class com.icanstudioz.foodpaprica.fragment.ItemFragment already registered to event class com.icanstudioz.foodpaprica.data.Items