recursion - Stack Over Flow Error When generating form dynamically in android -


i have class creating views dynamically json.as follows

class widget{ public static view createedittext(context ctx,string hint,string hint_color,string text_color,string bg_color,string input_type,linearlayout.layoutparams params){         edittext et=new edittext(ctx);         et.sethint(hint);         if(input_type.equals("password")){             et.settransformationmethod(passwordtransformationmethod.getinstance());         }else             if(input_type.equals("email")){                 et.setinputtype(inputtype.type_text_variation_email_address);             }else                 if(input_type.equals("number")){                     et.setinputtype(inputtype.type_class_number);                 }else if(input_type.equals("text")){                     et.setinputtype(inputtype.type_class_text);                 }else if(input_type.equals("date")){                     et.setinputtype(inputtype.type_class_datetime);                 }         et.settextcolor(color.parsecolor(text_color));         et.sethinttextcolor(color.parsecolor(hint_color));         et.setbackgroundcolor(color.parsecolor(bg_color));         et.setlayoutparams(params);         return et;     } } 

like have more methods remaining views label & button etc.when call these methods activity, throwing stack on flow error

else if (container.getview_type().equals("textfield")) {         if(container.getweight() == 0.0){             ll.addview(widget.createedittext(getactivity(), container.getview_hint(), container.gethint_color(), container.getcolor_text(), container.getcolor_bg(), container.getinputtype(), setparams(container.getwidth(), container.getheight(),container.getmargins())));         }else{             ll.addview(widget.createedittext(getactivity(), container.getview_hint(), container.gethint_color(), container.getcolor_text(), container.getcolor_bg(), container.getinputtype(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight())));         }     } 

my log follows

> 04-14 03:18:49.352: e/androidruntime(1363): fatal exception: main 04-14 03:18:49.352: e/androidruntime(1363): java.lang.stackoverflowerror 04-14 03:18:49.352: e/androidruntime(1363):     @ android.view.view.invalidate(view.java:10494) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.invalidateregion(textview.java:4543) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.invalidatecursor(textview.java:4534) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.spanchange(textview.java:7412) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview$changewatcher.onspanadded(textview.java:9103) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.spannablestringbuilder.sendspanadded(spannablestringbuilder.java:979) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.spannablestringbuilder.setspan(spannablestringbuilder.java:688) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.spannablestringbuilder.setspan(spannablestringbuilder.java:588) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.selection.setselection(selection.java:76) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.selection.setselection(selection.java:87) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.text.method.arrowkeymovementmethod.initialize(arrowkeymovementmethod.java:302) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.settext(textview.java:3759) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.settext(textview.java:3629) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.edittext.settext(edittext.java:80) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.textview.<init>(textview.java:1266) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.edittext.<init>(edittext.java:60) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.edittext.<init>(edittext.java:56) 04-14 03:18:49.352: e/androidruntime(1363):     @ android.widget.edittext.<init>(edittext.java:52) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.javaclasslist.widget.createedittext(widget.java:94) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:391) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_fragment.createform(newtrip_fragment.java:414) 04-14 03:18:49.352: e/androidruntime(1363):     @ com.demo.dynamic.activitylist.newtrip_frag 

i'm calling same method creating each view.as have switch case in that, checking view type & calling same method.can suggest me in right way.any great full.thank in advance.

edit 1: createform code :

view createform(final container container){     linearlayout ll;     string id=container.getid();     ll=new linearlayout(getactivity());     ll.setbackgroundcolor(color.parsecolor("#ffffff"));     ll.setorientation(linearlayout.vertical);      if(container.getview_type().equals("label")){         if(container.getweight() == 0.0){             ll.addview(widget.createtextview(getactivity(), container.getcolor_text(), container.getcolor_bg(), container.getview_text(), setparams(container.getwidth(), container.getheight(),container.getmargins()), container.gettext_size()));         }else{             ll.addview(widget.createtextview(getactivity(), container.getcolor_text(), container.getcolor_bg(), container.getview_text(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight()), container.gettext_size()));           }     }else if (container.getview_type().equals("textfield")) {         if(container.getweight() == 0.0){             ll.addview(widget.createedittext(getactivity(), container.getview_hint(), container.gethint_color(), container.getcolor_text(), container.getcolor_bg(), container.getinputtype(), setparams(container.getwidth(), container.getheight(),container.getmargins())));         }else{             ll.addview(widget.createedittext(getactivity(), container.getview_hint(), container.gethint_color(), container.getcolor_text(), container.getcolor_bg(), container.getinputtype(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight())));         }     }else if (container.getview_type().equals("button")) {         if(container.getonclick().equals("popup")){             linearlayout ll_child = null;             if(container.getcontainchild()==false){                 if(container.getweight() == 0.0){                     ll.addview(widget.createbutton(getactivity(), container.getview_text(), container.getcolor_text(), container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins()), container.getonclick(),container.getdialog_title()));                 }else{                     ll.addview(widget.createbutton(getactivity(), container.getview_text(), container.getcolor_text(), container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight()), container.getonclick(),container.getdialog_title()));                 }             }else{                 for(int j=0;j<containerlist.size();j++){                     if(id.equals(container_child=containerlist.get(j)))                         continue;                     ll_child=new linearlayout(getactivity());                     ll_child.setbackgroundcolor(color.parsecolor("#ffffff"));                     ll_child.setorientation(linearlayout.vertical);                     if(containerlist.get(j).getid().contains(id)){                         container_child=containerlist.get(j);                         ll_child.addview(createform(container_child));                         if(container.getweight() == 0.0){                             ll.addview(widget.createbutton(getactivity(), container.getview_text(),container.getcolor_text(),container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins()), container.getonclick(), container.getdialog_title(), ll_child,"vertical"));                         }else{                             ll.addview(widget.createbutton(getactivity(), container.getview_text(),container.getcolor_text(),container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight()), container.getonclick(), container.getdialog_title(), ll_child,"vertical"));                         }                     }                 }              }         }         else if(container.getonclick().equals("accordion")){             if(container.getweight() == 0.0){                 ll.addview(widget.createbutton(getactivity(), container.getview_text(), container.getcolor_text(), container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins())));             }else{                 ll.addview(widget.createbutton(getactivity(), container.getview_text(), container.getcolor_text(), container.getcolor_bg(), setparams(container.getwidth(), container.getheight(),container.getmargins(),container.getweight())));               }             final linearlayout ll_child=new linearlayout(getactivity());             ll_child.setbackgroundcolor(color.parsecolor("#ffffff"));             ll_child.setorientation(linearlayout.vertical);             for(int j=0;j<containerlist.size();j++){                 if(id == containerlist.get(j).getparentid()){                     container_child=containerlist.get(j);                     ll_child.addview(createform(container_child));                 }             }             ll.addview(ll_child);             ll_child.setvisibility(view.gone);             ll.getchildat(0).setonclicklistener(new onclicklistener() {                  @override                 public void onclick(view v) {                     //toast.maketext(getactivity(), "ll_child 0",toast.length_long).show();                     flag++;                     if(container_child.getview_type().equals("datepickerdialog")){                         widget.createdatepickerdialog(getactivity());                     }else{                         if(flag == 1){                             ll_child.setvisibility(view.visible);                         }                         if(flag == 2){                             flag=0;                             ll_child.setvisibility(view.gone);                         }                     }                 }             });         }     }      else if(container.getview_type().equals("select")){         spinner spinner = null;         if(container.getweight() == 0.0){                        spinner=(spinner) widget.createspinner(getactivity(), container.getspinner_choices(),setparams(container.getwidth(), container.getwidth(), container.getmargins()),container.getcolor_bg(),container.getcolor_text());         }else{             spinner=(spinner) widget.createspinner(getactivity(), container.getspinner_choices(),setparams(container.getwidth(), container.getwidth(), container.getmargins(),container.getweight()),container.getcolor_bg(),container.getcolor_text());         }         ll.addview(spinner);         spinner.setonitemselectedlistener(new onitemselectedlistener() {              @override             public void onitemselected(adapterview<?> parent, view view,                     int position, long id) {                 if(position > 0){                     toast.maketext(getactivity(), ""+container.getspinner_choices_db()[position], toast.length_short).show();                 }              }              @override             public void onnothingselected(adapterview<?> parent) {             }         });     }     else if(container.getview_type().equals("layout")){         linearlayout ll_temp = null;         if(container.getweight()== 0.0){             ll_temp=(linearlayout) widget.createlinearlayout(getactivity(), container.getorientation(), container.getcolor_bg(),setparams(container.getwidth(), container.getheight(), container.getmargins()));         }else{             ll_temp=(linearlayout) widget.createlinearlayout(getactivity(), container.getorientation(), container.getcolor_bg(),setparams(container.getwidth(), container.getheight(), container.getmargins(),container.getweight()));         }         if(container.getcontainchild() == true){             for(int j=0;j<containerlist.size();j++){                 if(id == containerlist.get(j).getparentid()){                     container_child=containerlist.get(j);                     ll_temp.addview(createform(container_child));                 }             }             ll.addview(ll_temp);         }     }     else if(container.getview_type().equals("datepicker")){          datepicker.ondatechangedlistener listener=new ondatechangedlistener() {              @override             public void ondatechanged(datepicker view, int year, int monthofyear,                     int dayofmonth) {                 toast.maketext(getactivity(), ""+view.getyear()+"/"+(monthofyear+1)+"/"+dayofmonth, toast.length_short).show();                              }         };         calendar c=calendar.getinstance();         int year_c=c.get(calendar.year);         int month_c=c.get(calendar.month);         int day_c=c.get(calendar.day_of_month);         if(container.getweight() == 0.0){             datepicker=(datepicker) widget.createdatepicker(getactivity(), year_c, month_c, day_c,container.getcolor_bg(), setparams(container.getwidth(), container.getheight(), container.getmargins()),listener);         }else{             datepicker=(datepicker) widget.createdatepicker(getactivity(), year_c, month_c, day_c, container.getcolor_bg(),setparams(container.getwidth(), container.getheight(), container.getmargins(),container.getweight()),listener);         }         ll.addview(datepicker);     }     else if(container.getview_type().equals("checkbox_boolean")){         checkbox cb=(checkbox)widget.createcheckboxboolean(getactivity(), container.getview_text(),container.getcolor_text(),container.getcolor_bg(),container.gettext_size(),setparams(container.getwidth(), container.getheight(), container.getmargins()));         ll.addview(cb);         cb.setoncheckedchangelistener(new oncheckedchangelistener() {              @override             public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) {                 if(ischecked == true){                     toast.maketext(getactivity(), "true", toast.length_short).show();                 }else{                     toast.maketext(getactivity(), "false", toast.length_short).show();                   }             }         });     }     else if(container.getview_type().equals("autocompleteselectwidget")){         autocompletetextview atv=(autocompletetextview) widget.createautocompleteedittext(getactivity(), container.getview_hint(), container.gethint_color(), container.getcolor_text(), container.getcolor_bg(), container.getinputtype(), setparams(container.getwidth(), container.getheight(), container.getmargins()),container.getthreshold());         atv.addtextchangedlistener(new textwatcher() {              @override             public void ontextchanged(charsequence s, int start, int before, int count) {                 if(container.getsearch_type().equals("trip")){                     toast.maketext(getactivity(), ""+s.tostring(), toast.length_short).show();                 }              }              @override             public void beforetextchanged(charsequence s, int start, int count,                     int after) {                 // todo auto-generated method stub              }              @override             public void aftertextchanged(editable s) {                 // todo auto-generated method stub              }         });         ll.addview(atv);     }     return ll; } 

the reason because calling createform() inside createform(). causes program go in endless (infinite) loop, hence stackoverflow exception.

take here:

enter image description here


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -