我为我的应用创建了一个图片幻灯片 但我遇到了一个问题
我有ViewPager
和4 Fragment
幻灯片
对于自动滚动我写这个方法:
public void autoScroll(Boolean autoScroll){
this.autoScroll=autoScroll;
if (autoScroll){
timer = new Timer();
timer.scheduleAtFixedRate(new pageSwitcher(), 0, 3000);
}else{
if (timer==null) return;
timer.cancel();
timer=null;
}
}
哪个页面切换器是这样的
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
现在我的问题是处理用户滑动和自动滚动。 如果用户在特定时间开始刷卡,适配器创建下一个片段(由于自动滚动请求)我面临此错误
java.lang.IllegalStateException: Fragment already active
at android.support.v4.app.Fragment.setInitialSavedState(Fragment.java:574)
at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:110)
at Views.XprojectSlider.SlidesAdapter.instantiateItem(SlidesAdapter.java:90)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:870)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:495)
at Views.XprojectSlider.XprojectImageSlider.nextPage(XprojectImageSlider.java:201)
at Views.XprojectSlider.XprojectImageSlider.access$500(XprojectImageSlider.java:42)
at Views.XprojectSlider.XprojectImageSlider$3.run(XprojectImageSlider.java:206)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
是否有任何标志来检测viewpager是否会更改页面以便我停止触摸事件?
或者为什么要创建下一个片段并且不需要调用适配器的instantiateItem方法?