Android pass databundle from activity to fragments (tabs) -


i've been trying id listview-onclicklistener 3 tabbed fragments. user firstly clicks in myticketsfragmentand goes detail page contains 3 swipeable tabs. these views 'hosted' 1 individual activity named ticketactivity. i've succesfully passed data fragment ticketactivity cannot go further that. been searching 2 hours , still no results..

here's code:

myticketsfragment: passing data in setonitemclicklistener tab activity

public void onitemclick(adapterview<?> parentview,                         view childview, int position, long id) {                      bundle bundle = new bundle();                     bundle.putint("ticketid", mytickets.get(position).getid());                     intent ticketdetail = new intent(getactivity(), ticketactivity.class);                     ticketdetail.addflags(intent.flag_activity_clear_top);                     ticketdetail.putextras(bundle);                     startactivity(ticketdetail); } 

ticketactivity: receiving data , passing through 3 tabs

private viewpager viewpager; private tickettabspageradapter madapter; private actionbar actionbar; // tab titles private string[] tabs = { "info", "intern", "extern" };  public ticketinfofragment ticketinfofragment;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.tabs);      // receive data     bundle bundle = getintent().getextras();     int ticketid = bundle.getint("ticketid");              // pass data fragments             // ...      // initilization     viewpager = (viewpager) findviewbyid(r.id.pager);     actionbar = getactionbar();     madapter = new tickettabspageradapter(getsupportfragmentmanager());      viewpager.setadapter(madapter);     actionbar.sethomebuttonenabled(true);     actionbar.setnavigationmode(actionbar.navigation_mode_tabs);      // adding tabs     (string tab_name : tabs) {         actionbar.addtab(actionbar.newtab().settext(tab_name)                 .settablistener(this));     }      /**      * on swiping viewpager make respective tab selected      * */     viewpager.setonpagechangelistener(new viewpager.onpagechangelistener() {          @override         public void onpageselected(int position) {             // on changing page             // make respected tab selected             actionbar.setselectednavigationitem(position);         }          @override         public void onpagescrolled(int arg0, float arg1, int arg2) {         }          @override         public void onpagescrollstatechanged(int arg0) {         }     }); } 

example of tab fragment

public class ticketinfofragment extends fragment {  ticketfull ticket = new ticketfull(); private databasehelper db; int ticketid; string androidid; string authcode; string platform_url; int uid;  @override public void onattach(activity activity) {     super.onattach(activity);      db = new databasehelper(getactivity()); }  @override public view oncreateview(layoutinflater inflater, viewgroup container,         bundle savedinstancestate) {      view rootview = inflater.inflate(r.layout.fragment_ticket_info, container, false);      return rootview; } } 

i pleased if me out

thanks in advance

2 quick ways:

  1. use static method in activity retrieve current ticket id

  2. design , implement interface , register fragments listeners activity

first option, in activity:

    private static int ticketid;      public static int getcurrentticketid(){          return ticketid;     } 

and in fragment can do:

tickeractivity.getcurrentticketid(); 

second option, use interface:

public interface ticketlistener{     public void onticketchanged(int newticket); } 

and in activity add:

public list<ticketlistener> listeners = new arraylist<ticketlistener>();  public void addlistener(ticketlistener listener){     listeners.add(listener); } 

and register every fragment new listener

yourfragment frag = new yourfragment(); addlistener(frag); 

and when want notify key listeners iterate on list:

for(ticketlistener listener : listeners){     listener.onticketchanged(ticket); } 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -