I lose data when i navigate between Fragments Android -
i don't know i'm doing wrong. have activity contain listview , fragment, when press item listview replaces fragment fragment. problem when add views fragment , replace fragment , if return first fragment don't find views added. there code:
@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view addreport = inflater .inflate(r.layout.add_report, container, false); listview listview = (listview) addreport.findviewbyid(r.id.list); // listview.addheaderview(padding); listview.setdivider(new gradientdrawable(orientation.left_right, colors)); listview.setdividerheight(1); remplirlistofreport(); reportadaptor reportschedule = new reportadaptor(getactivity(), r.layout.report_item_format, listofreports); listview.setadapter(reportschedule); // inflate root layout myinflater = (layoutinflater) addreport.getcontext().getsystemservice( context.layout_inflater_service); uploadfiles = (linearlayout) addreport.findviewbyid(r.id.upload_layout); picture = (button) addreport.findviewbyid(r.id.picture); video = (button) addreport.findviewbyid(r.id.video); vocale = (button) addreport.findviewbyid(r.id.vocal); report = (edittext) addreport.findviewbyid(r.id.report_text); picture.setonclicklistener(buttononclicklistener); video.setonclicklistener(buttononclicklistener); vocale.setonclicklistener(buttononclicklistener); return addreport; } button.onclicklistener buttononclicklistener = new button.onclicklistener() { private string fullpathaudio = ""; @override public void onclick(view v) { if (v == picture) { if(null != getgpscoordonnee(getactivity())){ intent intent = new intent(android.provider.mediastore.action_image_capture); startactivityforresult(intent, media_type_image); } } else if (v == video) { if(null != getgpscoordonnee(getactivity())){ intent intent1 = new intent(android.provider.mediastore.action_video_capture); intent1.putextra(mediastore.extra_video_quality, 1); // set //the video image quality high startactivityforresult(intent1, media_type_video); } } else if (v == vocale) { if(null != getgpscoordonnee(getactivity())){ getoutputmediafile(media_type_audio); fullpathaudio = url_start_with + file.separator + audio_name; vocale.settext("vocal"); view audioview = myinflater.inflate(r.layout.picture_format, uploadfiles, false); description = (textview) audioview .findviewbyid(r.id.picture_text); imageview = (imageview) audioview .findviewbyid(r.id.picture_image); edit = (button) audioview.findviewbyid(r.id.picture_edit); date = (textview) audioview.findviewbyid(r.id.picture_date); date.settext(time); description.settext("audio"); imageview.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent intent2 = new intent(getactivity(), showvideo.class); intent2.putextra("videoname", fullpathaudio); startactivity(intent2); } }); edit.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { editpicturenames(description); } }); uploadfiles.addview(audioview); intent myintent = new intent(getactivity(), audiorecordingactivity.class); myintent.setflags(intent.flag_activity_new_task); myintent.putextra("path", fullpathaudio); getactivity().startactivity(myintent); } } } };
there method in activity replaces fragments:
@override public void addreport(long id) { leaderboard_frag_tag = "report"; int show = 0; fragment = getsupportfragmentmanager().findfragmentbytag(leaderboard_frag_tag); if(null == fragment){ fragment = new addreportfragment(); show = 0; }else show = 1; fragmentmanager manager = getsupportfragmentmanager(); fragmenttransaction transaction = manager.begintransaction(); transaction.replace(r.id.myfragment, fragment, leaderboard_frag_tag); transaction.addtobackstack(null); transaction.settransition(fragmenttransaction.transit_fragment_fade); transaction.commit(); }
i presume listview recycled after it's replacement. try moving fragment.
Comments
Post a Comment