Trying to parse array list to main activity (android) -


this mainactivity tried using startactivityforresult method result editactivity app crashes when press add button on editactivity. i'm not sure going wrong.

public class mainactivity extends appcompatactivity { private list list = new arraylist<custombutton>(); private static final int edit_activity_result_code = 1; @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) {     super.onactivityresult(requestcode, resultcode, data);     // check secondactivity ok result     if (requestcode == edit_activity_result_code) {         if (resultcode == result_ok) {             bundle args = data.getbundleextra("bundle");             list = (arraylist<object>) args.getserializable("buttonlist");         }     } } public void buttoneditopen(view view) {     intent mintent = new intent(mainactivity.this, editactivity.class);     bundle args = new bundle();     args.putserializable("buttonlist",(serializable)list);     mintent.putextra("bundle",args);     startactivityforresult(mintent, edit_activity_result_code); } 

and second activity gets text , date create object called custombutton has single date , name , info, i'm trying parse mainactivity

public class editactivity extends appcompatactivity { private list list = new arraylist<custombutton>(); private int selectedyear; private int selectedmonth; private int selectedday;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     intent intent = getintent();     bundle args = intent.getbundleextra("bundle");     list = (arraylist<object>) args.getserializable("buttonlist");     setcontentview(r.layout.activity_edit);     final edittext etdate = (edittext) findviewbyid(r.id.edittextduedate);     etdate.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             calendar mcurrentdate = calendar.getinstance();             int myear = mcurrentdate.get(calendar.year);             int mmonth = mcurrentdate.get(calendar.month);             int mday = mcurrentdate.get(calendar.day_of_month);              datepickerdialog mdatepicker = new datepickerdialog(editactivity.this, new datepickerdialog.ondatesetlistener() {                 @override                 public void ondateset(datepicker datepicker, int tempselectedyear, int tempselectedmonth, int tempselectedday) {                     // etdate.settext("" + tempselectedyear + "/" + tempselectedmonth + "/" + tempselectedday);                     setclassdate(tempselectedyear, tempselectedmonth, tempselectedday);                 }             }, myear, mmonth, mday);             mdatepicker.settitle("select date");             mdatepicker.show();         }     }); }  public void buttonaddclick(view view) {     // getting information (name, date, info) activity_edit     edittext etname = (edittext) findviewbyid(r.id.edittextname);     edittext etdate = (edittext) findviewbyid(r.id.edittextduedate);     edittext etinfo = (edittext) findviewbyid(r.id.edittextinfo);     dateformat df = new simpledateformat("dd/mm/yyyy");     try {         date date = df.parse(etdate.gettext() + "");         custombutton tempbutton = new custombutton(etname.gettext() + "", date, etinfo.gettext() + "");         list.add(list.size(), tempbutton);         intent mintent = new intent();         bundle args = new bundle();         args.putserializable("buttonlist", (serializable) list);         mintent.putextra("bundle", args);         setresult(result_ok, mintent);         finish();     } catch (parseexception e) {         e.printstacktrace();     } }  public void setclassdate(int tempselectedyear, int tempselectedmonth, int tempselectedday) {     this.selectedyear = tempselectedyear;     this.selectedmonth = tempselectedmonth;     this.selectedday = tempselectedday;     edittext etdate = (edittext) findviewbyid(r.id.edittextduedate);      // student teacher, using mode 100 returns 2 decimal numbers. adding 0 month , date less 9      if (selectedmonth % 100 > 9 && selectedday % 100 > 9) {         etdate.settext(selectedday + "/" + selectedmonth + "/" + selectedyear);     } else if (selectedmonth % 100 > 9) {         etdate.settext("0" + selectedday + "/" + selectedmonth + "/" + selectedyear);     } else if (selectedday % 100 > 9) {         etdate.settext(selectedday + "/0" + selectedmonth + "/" + selectedyear);     } else {         etdate.settext("0" + selectedday + "/0" + selectedmonth + "/" + selectedyear);     } } } 

editted comment requesting custombutton class:

public class custombutton { private string _name; private date _duedate; private string _description; public custombutton(string _name, date _duedate, string _description) {     this._name = _name;     this._duedate = _duedate;     this._description = _description; } public string get_name() {     return _name; } public void set_name(string _name) {     this._name = _name; } public date get_duedate() {     return _duedate; } public void set_duedate(date _duedate) {     this._duedate = _duedate; } public string get_description() {     return _description; } public void set_description(string _description) {     this._description = _description; } @override public string tostring() {     string output = _name + '\'' + _duedate + '\''+_description;     return output; } } 

replace existing model class this

    public class custombutton implements parcelable{     private string _name;     private date _duedate;     private string _description;     public custombutton(string _name, date _duedate, string _description) {         this._name = _name;         this._duedate = _duedate;         this._description = _description;     }      protected custombutton(parcel in) {         _name = in.readstring();         _description = in.readstring();     }      public static final creator<custombutton> creator = new creator<custombutton>() {         @override         public custombutton createfromparcel(parcel in) {             return new custombutton(in);         }          @override         public custombutton[] newarray(int size) {             return new custombutton[size];         }     };      public string get_name() {         return _name;     }     public void set_name(string _name) {         this._name = _name;     }     public date get_duedate() {         return _duedate;     }     public void set_duedate(date _duedate) {         this._duedate = _duedate;     }     public string get_description() {         return _description;     }     public void set_description(string _description) {         this._description = _description;     }     @override     public string tostring() {         string output = _name + '\'' + _duedate + '\''+_description;         return output;     }      @override     public int describecontents() {         return 0;     }      @override     public void writetoparcel(parcel dest, int flags) {         dest.writestring(_name);         dest.writestring(_description);     } } 

changes in mainactivity class

            @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode, data);         // check secondactivity ok result         if (requestcode == edit_activity_result_code) {             if (resultcode == result_ok) {                 list<custombutton> list= data.getparcelablearraylistextra("bundle");             }         }     }      public void buttoneditopen(view view) {     intent mintent = new intent(mainactivity.this, editactivity.class);     mintent.putparcelablearraylistextra("bundle", list);     startactivityforresult(mintent, edit_activity_result_code); } 

now changes in edit class

//oncreate method

super.oncreate(savedinstancestate);     intent intent = getintent();     list = intent.getparcelablearraylistextra("bundle"); 

//set result in edit class this

intent mintent = new intent(); mintent.putparcelablearraylistextra("bundle", list); setresult(result_ok, mintent); finish(); 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -