小编Ale*_*xDG的帖子

当当前页面不是第一页时,ViewPager在旋转屏幕后有错误的偏移数据

应用结构:

我的应用程序有一个FragmentActivity,并FragmentActivity托管一个Fragment主机a ViewPager.该ViewPager有其子类的适配器FragmentStatePagerAdapater,并且该适配器将覆盖getItem()到返回基于位置的新片段; getCount()设置为始终返回2.

问题:

该应用程序工作正常,直到两件事情中的任何一件发生:当ViewPager显示第二个片段时发生旋转,或者如果,onResume()ViewPager被告知滚动到第一个片段以外的页面.据我所知,这些情况是相同的.当这些事件之一发生时,滚动停止,和可见片段是片段的由ViewPager被管理的第二,onPageScrolled(int, float, int)回调在"0"还是称为与"位置"的参数(它应该是1)和'positionOffset'参数设置为'1'(在文档中承诺的[0,1]范围之外).我在ViewPager代码中做了一些调查,发现该boolean pageScrolled(int xpos)函数是从[0,940](第一页上的0,然后是第二页上的940)范围内的值调用到使用范围内的值调用[ -940,0](第一个为-940,第二个为0).如果ViewPager被重置为认为第二页是第一页,那么这实际上是有意义的(有点),虽然它根本不是我想要的.

一些代码:

ViewPagerFragment(托管ViewPager).MyViewPager只是支持库的ViewPager的复制/粘贴; 我想从其私有方法中打印出一些数据.

public class ViewPagerFragment extends Fragment implements MyViewPager.OnPageChangeListener{

@InjectView(R.id.view_pager) MyViewPager viewPager;

@DebugLog
public ViewPagerFragment() {
    setRetainInstance(true);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
    ButterKnife.inject(this,view);
    Log.d("onCreateView()","ViewPagerFragment = "+this.toString());
    return view;
}

@Override
public void onResume() { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

6
推荐指数
1
解决办法
1274
查看次数