android - Menu Button on ViewPager toasts wrong position -


i loading local htmls in webview using viewpager. works fine , right page loaded webviewfragment viewpager activity. scroll or swipe works fine, added menu button title of current webview, , toast it. menu button returns webview title of next 2 webview pages in viewpager.

reducing setofscreenlimit 1 toasts webview title of next webview page in viewpager. cant setofscreenlimit 0. probable way current item's webview title when menu button clicked. need , save db.

code:

viewpager

viewpager pager = (viewpager) findviewbyid(r.id.pager);     tabspageradapterenglish pageadapter = new tabspageradapterenglish(getsupportfragmentmanager());      bundle extras = getintent().getextras();     int value = 0;     if (extras != null) {         value = extras.getint("keyhtml");     }      pager.setadapter(pageadapter);     pager.setcurrentitem(value);     pager.setoffscreenpagelimit(1); 

adapter

public class tabspageradapterenglish extends fragmentpageradapter {     private static int num_items = 3      public tabspageradapterenglish(fragmentmanager fragmentmanager) {         super(fragmentmanager);     }      // returns total number of pages     @override     public int getcount() {         return num_items;     }      // returns fragment display page     @override     public fragment getitem(int position) {         switch (position) {             case 0:                 return webfragmentenglish.newinstance(0, "file:///android_asset/page1.html");             case 1:                 return webfragmentenglish.newinstance(1, "file:///android_asset/page2.html");             case 2:                 return webfragmentenglish.newinstance(2, "file:///android_asset/page3.html");              default:                 return null;         }     }      @override     public charsequence getpagetitle(int position) {      }      } 

webfragment

public class webfragmentenglish extends fragment {  // newinstance constructor creating fragment arguments public static webfragmentenglish newinstance(int position, string url) {     webfragmentenglish fragmentfirst = new webfragmentenglish();     bundle args = new bundle();     args.putint("page_position", position);     args.putstring("keyhtml", url);     fragmentfirst.setarguments(args);     return fragmentfirst; }  // store instance variables based on arguments passed @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     sethasoptionsmenu(true);      toolbar toolbar = (toolbar) getactivity().findviewbyid(r.id.toolbar);      if (null != toolbar) {         toolbar.setnavigationicon(r.drawable.abc_ic_ab_back_mtrl_am_alpha);     }      position = getarguments().getint("page_position", 0);     url = getarguments().getstring("keyhtml");      toolbar.setonmenuitemclicklistener(new toolbar.onmenuitemclicklistener() {         @override         public boolean onmenuitemclick(menuitem item) {             switch (item.getitemid()) {                 case android.r.id.home:                     getactivity().finish();                 case r.id.action_addtofav:                     webview = (webview) getactivity().findviewbyid(r.id.webview1);                     htitle = webview.gettitle();                     savedata();                     toast.maketext(getactivity(), htitle + " added favorite",                             toast.length_short).show();                     return true;             }             return false;         }     }); }  // inflate view fragment based on layout xml @override public view oncreateview(layoutinflater inflater, viewgroup container,                          bundle savedinstancestate) {     view view = inflater.inflate(r.layout.webview, container, false);      webview = (webview) view.findviewbyid(r.id.webview1);     progressbar = (progressbar) view.findviewbyid(r.id.progressbar);      progressbar.setmax(100);      webview.setwebviewclient(new webviewclientdemo());     webview.setwebchromeclient(new webchromeclientdemo());     webview.setinitialscale(1);     webview.getsettings().setjavascriptenabled(true);     webview.getsettings().setloadwithoverviewmode(true);     webview.getsettings().setusewideviewport(true);     webview.setscrollbarstyle(webview.scrollbars_outside_overlay);     webview.getsettings().setpluginstate(websettings.pluginstate.on);     webview.getsettings().setloadsimagesautomatically(true);     webview.setscrollbarstyle(webview.scrollbars_outside_overlay);     webview.setscrollbarfadingenabled(false);     webview.getsettings().setbuiltinzoomcontrols(true);     webview.setscrollbarstyle(view.scrollbars_inside_overlay);     webview.setonlongclicklistener(new view.onlongclicklistener() {          @override         public boolean onlongclick(view arg0) {             // todo auto-generated method stub             return true;         }     });     webview.setlongclickable(false);     webview.setwebchromeclient(new webchromeclient() {         public void onprogresschanged(webview view, int progress) {              progressbar.setprogress(progress);          }     });     webview.loadurl(url);     return view; } 

viewpager load current page , next page(s) offscreenlimit. name of current page need current position of adapter.

it's hard give more specific without having code posted. can use viewpager getcurrentitem method visible index. there can either compare index of page you're displaying (this works if view pager static , pages known in advance), or can use index fragment pageradapter , call method on save name.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -