如何处理"自动滚动"和"手动滚动"在viewpager中

时间:2015-12-11 04:43:28

标签: android android-fragments

我为我的应用创建了一个图片幻灯片 但我遇到了一个问题

我有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方法?

0 个答案:

没有答案