java - Fragments inside ViewPager issue -


i have 3 fragments inside viewpager. each fragment set different navigationbar color (programmatically). code.

@override     public void init(bundle arg0) {         // todo auto-generated method stub         addslide(new fragment1());         addslide(new fragment2());         addslide(new fragment3());      }       private class fragment1 extends fragment {          @override         public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {              if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                     getwindow().setnavigationbarcolor(color.parsecolor(blue));             }             log.e("test", "1");             return inflater.inflate(r.layout.layout_intro, container, false);         }      }      private class fragment2 extends fragment {          @override         public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {              if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                     getwindow().setnavigationbarcolor(color.parsecolor(red));             }                 log.e("test", "2");              return inflater.inflate(r.layout.layout_intro_2, container, false);         }      }      private class fragment3 extends fragment {          @override         public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {              if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                     getwindow().setnavigationbarcolor(color.parsecolor(green));             }                 log.e("test", "3");              return inflater.inflate(r.layout.layout_intro_3, container, false);         }      }  }  

in logcat see wrong numbers. example i'm in first fragment , see green navigationbar , "2". why? how can solve?

this happens because viewpager loads next fragment, if on fragment one, fragment 2 created, if swipe fragment 2, fragment 3 created. that's why swiping smooth.

todo want need add onpagechangelistener viewpager this:

mviewpager.setonpagechangelistener(new viewpager.onpagechangelistener() {              @override          public void onpageselected(int position) {             switch(position) {                 case 1: if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                       getwindow().setnavigationbarcolor(color.parsecolor(blue));                     }                     break;                     case 2: if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                       getwindow().setnavigationbarcolor(color.parsecolor(red));                     }                     break;                     case 3: if (android.os.build.version.sdk_int >= build.version_codes.lollipop) {                                       getwindow().setnavigationbarcolor(color.parsecolor(green));                     }                     break;                 }         }          @override         public void onpagescrolled(int position, float offset, int offsetpixel) {         }          @override         public void onpagescrollstatechanged(int state) {          }     }); 

and on.


Comments