java - Not getting BehaviourSubject -


i have done android pretty new java 8. have made behavioursubject< map< string,string>>.

i have put observable on it. presenter class setting behavioursbuject observable , onclick made onnext calling of same. throwing rx.exceptions.onerrornotimplementedexception.

i not getting why throwing error have reffered http://reactivex.io/rxjava/javadoc/index.html?rx/exceptions/onerrornotimplementedexception.html according made on onnext call observable still getting error.

mainscreenview interface implemented mainscreenfragment.

presenter class

public class mainscreenpresenter { public mainscreenpresenter(mainscreenview view, mainscreenmodel model) {     log.i("mainscreenpresenter", "default constructor");     view.addplace().subscribe(place -> model.place(place));     } } 

mainscreenfragment class

public class mainscreenfragment extends fragment implements mainscreenview, view.onclicklistener {  arraylist<place> places; view mainscreenrootfragment; button addplace; textview venuedate; place newplace; behaviorsubject<map<string, string>> placeadded = behaviorsubject.create();   @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {     mainscreenrootfragment = inflater.inflate(r.layout.main_screen_fragment, container);     log.i("mainscreenfragment", "oncreateview");     setretaininstance(true);     return mainscreenrootfragment; }  @override public void onviewcreated(view view, @nullable bundle savedinstancestate) {     super.onviewcreated(view, savedinstancestate);     log.i("mainscreenfragment", "onviewcreated");     initializeviews(view);     seteventsforviews(); }  private void seteventsforviews() {     addplace.setonclicklistener(this); }  private void initializeviews(view view) {     addplace = (button) view.findviewbyid(r.id.add_place);     venuedate = (textview) view.findviewbyid(r.id.venue_date);     places = new arraylist<>(); }  @override public observable<map<string, string>> addplace() {     log.i("mainscreenfragment", "addplace");     return placeadded.asobservable(); }  @override public void onclick(view v) {     if (v.getid() == r.id.add_place) {         log.i("mainscreenfragment", "add_place button clicked");         placedata();         log.i("mainscreenfragment", "after onnext()");     } else if (v.getid() == r.id.rv) {      } }  private void placedata() {     log.i("mainscreenfragment", "data mapping in placedata()");     map<string, string> map = new hashmap<>();      map.put("placename", "lonavala");     map.put("placedate", "20/5/2015");     placeadded.onnext(map);     } } 

errors

07-10 10:14:25.414    2754-2754/com.example.vikky.hisab w/dalvikvm﹕ threadid=1: thread exiting uncaught exception (group=0x41703d58) 07-10 10:14:25.424    2754-2754/com.example.vikky.hisab e/androidruntime﹕ fatal exception: main process: com.example.vikky.hisab, pid: 2754 rx.exceptions.onerrornotimplementedexception         @ rx.observable$31.onerror(observable.java:7204)         @ rx.observers.safesubscriber._onerror(safesubscriber.java:127)         @ rx.observers.safesubscriber.onerror(safesubscriber.java:96)         @ rx.observers.safesubscriber.onnext(safesubscriber.java:111)         @ rx.internal.operators.notificationlite.accept(notificationlite.java:150)         @ rx.subjects.subjectsubscriptionmanager$subjectobserver.emitnext(subjectsubscriptionmanager.java:254)         @ rx.subjects.behaviorsubject.onnext(behaviorsubject.java:166)         @ com.example.vikky.hisab.mainscreenfragment.placedata(mainscreenfragment.java:115)         @ com.example.vikky.hisab.mainscreenfragment.onclick(mainscreenfragment.java:100)         @ android.view.view.performclick(view.java:4444)         @ android.view.view$performclick.run(view.java:18440)         @ android.os.handler.handlecallback(handler.java:733)         @ android.os.handler.dispatchmessage(handler.java:95)         @ android.os.looper.loop(looper.java:136)         @ android.app.activitythread.main(activitythread.java:5050)         @ java.lang.reflect.method.invokenative(native method)         @ java.lang.reflect.method.invoke(method.java:515)         @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:806)         @ com.android.internal.os.zygoteinit.main(zygoteinit.java:622)         @ dalvik.system.nativestart.main(native method)  caused by: java.lang.nullpointerexception         @ com.example.vikky.hisab.mainscreenpresenter.lambda$new$5(mainscreenpresenter.java:11)         @ com.example.vikky.hisab.mainscreenpresenter.access$lambda$0(mainscreenpresenter.java)         @ com.example.vikky.hisab.mainscreenpresenter$$lambda$1.call(unknown source)         @ rx.observable$31.onnext(observable.java:7209)         @ rx.observers.safesubscriber.onnext(safesubscriber.java:104) 

thanks in advance

it appears me in onnext handler throwing nullpointerexception. guess rxjava trying catch , publish exception onerror handler have not provided. escalated onerrornotimplementedexception.

so 2 things here:

  1. good practice have onerror handler. if dont there no way catch exception in async world.
  2. my guess model null, calling model.place(place) thing throwing npe. perhaps in place method, stack trace seems point model being null.

Comments