How to fix super classes have no public methods with the @Subscribe annotation in Android -


i want show 3 fragments in activity , load data json in fragments! want show each json data 1 fragment, in application show of data in fragments! for example : want show article data article fragment, music data music fragment , more ...
when running application, show me error :

fatal exception: main process: com.razemovafaghiat.tellfa.android, pid: 1865 org.greenrobot.eventbus.eventbusexception: subscriber class com.razemovafaghiat.tellfa.android.fragments.free_fragment , super classes have no public methods @subscribe annotation   @ org.greenrobot.eventbus.subscribermethodfinder.findsubscribermethods(subscribermethodfinder.java:67)   @ org.greenrobot.eventbus.eventbus.register(eventbus.java:136)   @ com.razemovafaghiat.tellfa.android.fragments.free_fragment.onresume(free_fragment.java:83)   @ android.support.v4.app.fragment.performresume(fragment.java:2020)   @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1107)   @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1252)   @ android.support.v4.app.backstackrecord.run(backstackrecord.java:738)   @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1617)   @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:570)   @ android.support.v4.app.fragmentpageradapter.finishupdate(fragmentpageradapter.java:141)   @ android.support.v4.view.viewpager.populate(viewpager.java:1177)   @ android.support.v4.view.viewpager.populate(viewpager.java:1025)   @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1545)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.support.design.widget.coordinatorlayout.onmeasurechild(coordinatorlayout.java:664)   @ android.support.design.widget.coordinatorlayout.onmeasure(coordinatorlayout.java:731)   @ android.view.view.measure(view.java:17496)   @ android.support.v4.widget.drawerlayout.onmeasure(drawerlayout.java:1075)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.widget.framelayout.onmeasure(framelayout.java:430)   @ android.support.v7.widget.contentframelayout.onmeasure(contentframelayout.java:135)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1438)   @ android.widget.linearlayout.measurevertical(linearlayout.java:724)   @ android.widget.linearlayout.onmeasure(linearlayout.java:615)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.widget.framelayout.onmeasure(framelayout.java:430)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1438)   @ android.widget.linearlayout.measurevertical(linearlayout.java:724)   @ android.widget.linearlayout.onmeasure(linearlayout.java:615)   @ android.view.view.measure(view.java:17496)   @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5466)   @ android.widget.framelayout.onmeasure(framelayout.java:430)   @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2636)   @ android.view.view.measure(view.java:17496)   @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:2031)   @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1193)   @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1400)   @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1078)   @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5875)   @ android.view.choreographer$callbackrecord.run(choreographer.java:767)   @ android.view.choreographer.docallbacks(choreographer.java:580)   @ android.view.choreographer.doframe(choreographer.java:550)   @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:753)   @ android.os.handler.handlecallback(handler.java:739)   @ android.os.handler.dispatchmessage(handler.java:95)   @ android.os.looper.loop(looper.java:135)   @ android.app.activitythread.main(activityt 06-06 17:23:29.721 1865-3617/com.razemovafaghiat.tellfa.android e/error: org.json.jsonexception: index 1 out of range [0..1) 06-06 17:23:30.350 1865-3755/com.razemovafaghiat.tellfa.android e/error: org.json.jsonexception: index 1 out of range [0..1) 

myevent code:

public class myevent {     public string fragmenttag ;     private list<datamodel> infomodels = new arraylist<>();      public myevent (string tag,list<datamodel> models){         this.fragmenttag = tag;         this.infomodels = models;     } } 

freedata (asynctask) :

public class freedatainfo {     private context mcontext;     private string serveraddress = freeserver_ip.getfreeip();      public void getfreedatainfo(context context) {         mcontext = context;         new getinfo().execute(serveraddress + "limit=10");     }      private class getinfo extends asynctask<string, void, string> {         eventbus bus = eventbus.getdefault();         private string ou_response;         private list<datamodel> infomodels = new arraylist<>();         private progressdialog dialog;          @override         protected void onpreexecute() {             //customprocessdialog.createandshow(mcontext);              dialog = new progressdialog(mcontext);             this.dialog.setmessage("شکیبا باشید...");             this.dialog.show();         }          @override         protected string doinbackground(string... params) {             okhttpclient client = new okhttpclient();              //string url = (string) params[0];             request request = new request.builder()                     .url(serveraddress + "limit=10")                     .cachecontrol(cachecontrol.force_network)                     .build();              response response;             try {                 response = client.newcall(request).execute();                 ou_response = response.body().string();                 response.body().close();                 if (ou_response != null) {                     try {                         jsonobject postobj = new jsonobject(ou_response);                         jsonarray postsarray = postobj.optjsonarray("result");                          (int = 0; <= postsarray.length(); i++) {                             jsonobject postobject = (jsonobject) postsarray.get(i);                              int id = postobject.getint("id");                             log.d("id", string.valueof(id));                             string title = postobject.getstring("title");                             string description = postobject.getstring("description");                             string image = postobject.getstring("image");                             string category = postobject.getstring("categoryname");                             string date = postobject.getstring("publishdate");                              log.d("data", "post id: " + id);                             log.d("data", "post title: " + title);                             log.d("data", "post image: " + image);                             log.d("data", "---------------------------------");                              //use title , id per requirement                             infomodels.add(new datamodel(id, title, description, category, date, image));                         }                     } catch (jsonexception e) {                         e.printstacktrace();                         log.e("error", string.valueof(e));                     }                 }             } catch (ioexception e) {                 e.printstacktrace();                 log.e("error2", string.valueof(e));             }             return ou_response;         }          @override         protected void onpostexecute(string result) {             //customprocessdialog.dissmis();              //stop progress             if (dialog.isshowing()) {                 dialog.dismiss();             }              if (result != null) {                 bus.post(new myevent("forfragment1", infomodels));             } else {                 toast.maketext(mcontext, "empty", toast.length_short).show();             }         }     } } 

paiddata (asynctask) :

public class paiddatainfo {     private context mcontext;     private string serveraddress = paidserver_ip.getpaidip();      public void getpaiddatainfo(context context) {         mcontext = context;         new getinfo().execute(serveraddress + "limit=10");     }      private class getinfo extends asynctask<string, void, string> {         eventbus bus = eventbus.getdefault();         private string ou_response;         private list<datamodel> infomodels = new arraylist<>();         private progressdialog dialog;          @override         protected void onpreexecute() {             //customprocessdialog.createandshow(mcontext);             //infomodels = new arraylist<>();              // initiate progress             dialog = new progressdialog(mcontext);             this.dialog.setmessage("شکیبا باشید...");             this.dialog.show();         }          @override         protected string doinbackground(string... params) {             okhttpclient client = new okhttpclient();              //string url = (string) params[0];             request request = new request.builder()                     .url(serveraddress + "limit=10")                     .cachecontrol(cachecontrol.force_network)                     .build();              response response;             try {                 response = client.newcall(request).execute();                 ou_response = response.body().string();                 response.body().close();                 if (ou_response != null) {                     try {                         jsonobject postobj = new jsonobject(ou_response);                         jsonarray postsarray = postobj.optjsonarray("result");                         infomodels = new arraylist<>();                          (int = 0; <= postsarray.length(); i++) {                             jsonobject postobject = (jsonobject) postsarray.get(i);                              int id = postobject.getint("id");                             log.d("id", string.valueof(id));                             string title = postobject.getstring("title");                             string description = postobject.getstring("full_description");                             string image = postobject.getstring("image");                             string category = postobject.getstring("categoryname");                             string date = postobject.getstring("publishdate");                              log.d("data", "post id: " + id);                             log.d("data", "post title: " + title);                             log.d("data", "post desc: " + description);                             log.d("data", "post image: " + image);                             log.d("data", "---------------------------------");                              //use title , id per requirement                             infomodels.add(new datamodel(id, title, description, category, date, image));                         }                     } catch (jsonexception e) {                         e.printstacktrace();                         log.e("error", string.valueof(e));                     }                 }             } catch (ioexception e) {                 e.printstacktrace();                 log.e("error2", string.valueof(e));             }             return ou_response;         }          @override         protected void onpostexecute(string result) {             //stop progress             if (dialog.isshowing()) {                 dialog.dismiss();             }             //customprocessdialog.dissmis();             if (result != null) {                 bus.post(new myevent("forfragment2", infomodels));             } else {                 toast.maketext(mcontext, "empty", toast.length_short).show();             }         }     } } 

free fragment :

public class free_fragment extends fragment {      private recyclerview mrecyclerview;     private free_recycler_adapter madapter;     private recyclerview.layoutmanager mlayoutmanager;     private list<datamodel> datamodels = new arraylist<datamodel>();      private context context;      @override     public view oncreateview(layoutinflater inflater,                              viewgroup container, bundle savedinstancestate) {          view view = inflater.inflate(r.layout.fragment_free_layout, container, false);          context = getcontext();  /*        if (!eventbus.getdefault().isregistered(this)) {             eventbus.getdefault().register(this);         }*/         loaddata();          ///----- recyclerview -----         mrecyclerview = (recyclerview) view.findviewbyid(r.id.pdf_recyclerview);         mrecyclerview.sethasfixedsize(true);         mrecyclerview.setlayoutmanager(new linearlayoutmanager(getactivity()));         madapter = new free_recycler_adapter(context, datamodels);         mrecyclerview.setadapter(madapter);           return view;     }       @subscribe     public void onevent(myevent event, list<datamodel> maininfomodels) { /*        if (datamodels.size() > 0) {             datamodels.remove(datamodels.size() - 1);             madapter.notifyitemremoved(datamodels.size());             //madapter.setloaded();         }*/         if (event.fragmenttag.equals("forfragment1")) {             madapter.add(maininfomodels);             madapter.notifydatasetchanged();         }     }      private void loaddata() {         freedatainfo datainfo = new freedatainfo();         // here getmaindatainfo() should return server response         datainfo.getfreedatainfo(context);     }      @override     public void onresume() {         super.onresume();         eventbus.getdefault().register(this);     }      @override     public void onpause() {         eventbus.getdefault().unregister(this);         super.onpause();     } } 

paid fragment :

public class paid_fragment extends fragment {      private recyclerview mrecyclerview;     private paid_recycler_adapter madapter;     private recyclerview.layoutmanager mlayoutmanager;     private list<datamodel> datamodels = new arraylist<datamodel>();      private context context;      @override     public view oncreateview(layoutinflater inflater,                              viewgroup container, bundle savedinstancestate) {          view view = inflater.inflate(r.layout.fragment_paid_layout, container, false);          context = getcontext();  /*        if (!eventbus.getdefault().isregistered(this)) {             eventbus.getdefault().register(this);         }*/          loaddata();          ///----- recyclerview -----         mrecyclerview = (recyclerview) view.findviewbyid(r.id.voice_recyclerview);         mrecyclerview.sethasfixedsize(true);         mrecyclerview.setlayoutmanager(new linearlayoutmanager(getactivity()));         madapter = new paid_recycler_adapter(context, datamodels);         mrecyclerview.setadapter(madapter);          return view;     }      @subscribe     public void onevent(myevent event, list<datamodel> maininfomodels) { /*        if (datamodels.size() > 0) {             datamodels.remove(datamodels.size() - 1);             madapter.notifyitemremoved(datamodels.size());             //madapter.setloaded();         }*/          if (event.fragmenttag.equals("forfragment2")) {             madapter.add(maininfomodels);             madapter.notifydatasetchanged();         }     }      private void loaddata() {         paiddatainfo datainfo = new paiddatainfo();         // here getmaindatainfo() should return server response         datainfo.getpaiddatainfo(context);     }      @override     public void onresume() {         super.onresume();         eventbus.getdefault().register(this);     }      @override     public void onpause() {         eventbus.getdefault().unregister(this);         super.onpause();     } } 

how can fix problem? <3

remove list parameter onevent method. instead use list put event. either require make field public in event or add getter list.

something this:

 public class myevent {     public string fragmenttag ;     private list<datamodel> infomodels = new arraylist();      public myevent (string tag,list<datamodel> models){         this.fragmenttag = tag;         this.infomodels = models;     }      public list<datamodel> getinfomodels() {         return infomodels;     } } 
  @subscribe     public void onevent(myevent event) {        list<datamodel> datamodels = event.getinfomodels();        if (datamodels.size() > 0) {             datamodels.remove(datamodels.size() - 1);             madapter.notifyitemremoved(datamodels.size());             //madapter.setloaded();         }          if (event.fragmenttag.equals("forfragment2")) {             madapter.add(maininfomodels);             madapter.notifydatasetchanged();         }     }