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
Post a Comment