android - Is it possible to send an object from a fragment to another fragment? -


the object want send fragment fragment "post". demandfragment consist of listview consist of items post objects.

i need send selected item listview, in case postarraylist.get(position), selectedpostfragment.

i've tried bundle not working...

does know how fix this?

demandfragment:

public class demandfragment extends fragment {  listview lv; arrayadapter adapter; arraylist<post> postarraylist; private edittext editsearch;  @nullable @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {     view rootview = inflater.inflate(r.layout.fragment_demand, container, false);      if(rootview != null){         lv = (listview) rootview.findviewbyid(r.id.listdemand);          editsearch = (edittext) rootview.findviewbyid(r.id.search_post);          lv.setonitemclicklistener(new adapterview.onitemclicklistener() {             @override             public void onitemclick(adapterview<?> parent, view view, int position, long id) {                 // clicked on item show post                 post selectedpost = postarraylist.get(position);                 bundle bundle = new bundle();                 bundle.putparcelable("data", (parcelable) selectedpost);                 fragmentmanager fm = getactivity().getfragmentmanager();                 fragment fragment = new rang.afterflight.fragments.selectedpostfragment();                 fragment.setarguments(bundle);                 fm.begintransaction().replace(r.id.content_main, fragment).commit();             }         });     }     searchpost();     return rootview; }  public void searchpost(){     editsearch.addtextchangedlistener(new textwatcher() {         @override         public void beforetextchanged(charsequence s, int start, int count, int after) {          }          @override         public void ontextchanged(charsequence s, int start, int before, int count) {             adapter.getfilter().filter(s);         }          @override         public void aftertextchanged(editable s) {          }     }); }   @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);      sethasoptionsmenu(true);      parsequery<parseobject> query = parsequery.getquery("post");      postarraylist = new arraylist<post>();      query.findinbackground(new findcallback<parseobject>() {         public void done(list<parseobject> postlist, parseexception e) {             if (e == null) {                 (parseobject object : postlist) {                     post newpost = new post();                      newpost.setairportparse((string) object.get("airport"));                     newpost.setdateparse((string) object.get("date"));                     newpost.settimeparse((string) object.get("time"));                     newpost.setpersonsparse((string) object.get("persons"));                     newpost.setaddressparse((string) object.get("address"));                     newpost.setflightnrparse((string) object.get("address"));                     newpost.setusername((string) object.get("username"));                     newpost.setimagefile((parsefile) object.get("profilepic"));                      postarraylist.add(newpost);                 }                 adapter = new listviewadapter(getactivity(), r.layout.item_cardview, postarraylist);                 lv.setadapter(adapter);             }         }     }); } 

}

selectedpostfragment:

public class selectedpostfragment extends fragment { textview airportpost, datepost, timepost, personspost, addresspost,         flightnrpost, postedbypost, contactpost;   imageview iv;  @nullable @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {     view rootview = inflater.inflate(r.layout.fragment_selectedpost, container, false);      airportpost = (textview) rootview.findviewbyid(r.id.airport_post);     datepost = (textview) rootview.findviewbyid(r.id.date_post);     timepost = (textview) rootview.findviewbyid(r.id.time_post);     personspost = (textview) rootview.findviewbyid(r.id.persons_post);     addresspost = (textview) rootview.findviewbyid(r.id.address_post);     flightnrpost = (textview) rootview.findviewbyid(r.id.flightnr_post);     postedbypost = (textview) rootview.findviewbyid(r.id.postedby_post);     contactpost = (textview) rootview.findviewbyid(r.id.contact_post);      post selectedpost = getarguments().getparcelable("object");     string s = (string) selectedpost.get("airport");     log.d("airport name", s);      return rootview; } 

}

post:

@parseclassname("post") public class post extends parseobject implements serializable {      public post(){         super();     }      public string getid(){         return getstring("objectid");     }      public void setid(string id){         put("objectid", id);     }      //////////      public string getusername(){         return getstring("username");     }      public void setusername(string username){         put("username", username);     }        public string getairportparse(){         return getstring("airport");     }      public void setairportparse(string airport){         put("airport", airport);     }      //////////       public string getdateparse(){         return getstring("date");     }      public void setdateparse(string date){         put("date", date);     }       //////////       public string gettimeparse(){         return getstring("time");     }      public void settimeparse(string time){         put("time", time);     }       //////////       public string getpersonsparse(){         return getstring("persons");     }      public void setpersonsparse(string persons){         put("persons", persons);     }       //////////       public string getaddressparse(){         return getstring("address");     }      public void setaddressparse(string address){         put("address", address);     }      public string getflightnrparse(){         return getstring("flightnr");     }      public void setflightnrparse(string flightnr){         put("flightnr", flightnr);     }       public bitmap getimagefile(){         bitmap bmp = null;         parsefile image = getparsefile("profilepic");         if(image != null){             try {                 byte[] data = image.getdata();                 bmp = bitmapfactory.decodebytearray(data, 0, data.length);             } catch (parseexception e) {                 e.printstacktrace();                 }         }         return bmp;     }      public void setimagefile(parsefile file) {         if (file != null) {             put("profilepic", file);         }     } } 

i believe post class needs implement parcelable pass in bundle between fragments putparcelable().

check out: parcelable.

this great example.

basic implementation:

public class post extends parseobject implements serializable, parcelable {     ...      public int describecontents() {         return 0;     }      public void writetoparcel(parcel out, int flags) {         out.writestring(getid());         out.writesring(getusername());         ...     }      public static final parcelable.creator<post> creator         = new parcelable.creator<post>() {             public post createfromparcel(parcel in) {                 return new post(in);             }              public post[] newarray(int size) {                 return new post[size];             }     };      private post(parcel in) {         // items must read in order written.         setid(in.readstring());         setusername(in.readstring());         ...     } } 

try on size, hope helps.


Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -