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:
- good practice have
onerrorhandler. if dont there no way catch exception in async world. - my guess
modelnull, callingmodel.place(place)thing throwing npe. perhaps in place method, stack trace seems pointmodelbeing null.
Comments
Post a Comment