android - Fragment Management -


when managing tab-interface represented fragments, having issues managing them. when app first started, first / default fragment shown on display. however, when click on tab switch fragments, screen flashes before second fragment inflated , shown. after second fragment shown, can switch between 2 seamlessly. possible pre-inflate 2 fragments during startup of app? here code:

@override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      favoritesfragment = new favoritestab();     searchfragment = new nearbytab();   // database initialization     db = new databasehandler(this);     prev_stops = db.getallbusstop();      ab = getactionbar();     ab.setbackgrounddrawable(new colordrawable(color.dkgray));     ab.setstackedbackgrounddrawable(new colordrawable(color.gray));     ab.setnavigationmode(actionbar.navigation_mode_tabs);      tab tab1 = ab.newtab().settext("favorites")             .settablistener(new tablistener<favoritestab>(                     this, "tabone", favoritestab.class, favoritesfragment));      tab tab2 = ab.newtab().settext("nearby")             .settablistener(new tablistener<nearbytab>(                     this, "tabtwo", nearbytab.class, searchfragment));      ab.addtab(tab1, 0, true);     ab.addtab(tab2, 1, false);  }  public static class tablistener<t extends fragment> implements actionbar.tablistener {     private fragment mfragment;     private final activity mactivity;     private final string mtag;     private final bundle margs;     private final class<t> mclass;       public tablistener(activity activity, string tag, class<t> clz, fragment fragment) {         this(activity, tag, clz, null, fragment);     }      public tablistener(activity activity, string tag, class<t> clz, bundle args, fragment fragment) {         mactivity = activity;         mtag = tag;         mclass = clz;         margs = args;         mfragment = fragment;          // check see if have fragment tab,         // saved state.  if so, deactivate it, because our         // initial state tab isn't shown.          //mfragment = mactivity.getfragmentmanager().findfragmentbytag(mtag);         if (mfragment != null /*&& !mfragment.isdetached()*/) {             system.out.println("in tablistener constructor now");             fragmenttransaction ft = mactivity.getfragmentmanager().begintransaction();             ft.remove(mfragment);             ft.commit();         }     }      /* following each of actionbar.tablistener callbacks */      public void ontabselected(tab tab, fragmenttransaction ft) {         // check if fragment initialized         if(mfragment.ishidden()) {             system.out.println("initial loop");             ft.show(mfragment);         }         else {              system.out.println("non-initial loop");             ft.add(r.id.fragment_container, mfragment);         }      }      public void ontabunselected(tab tab, fragmenttransaction ft) {         if (mfragment != null) {             // detach fragment, because 1 being attached             ft.hide(mfragment);             //ft.remove(mfragment);              curr_tab = tab.getposition();             if(curr_tab == 1) {                 item3.seticon(r.drawable.refresh);             }             else {                 item3.seticon(r.drawable.location_found);             }         }     }      public void ontabreselected(tab tab, fragmenttransaction ft) {         // user selected selected tab. nothing.     } } 

on side note, possible give setup swipe / sliding animation similar of viewpager when switching tabs?


Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -