当我们使用ViewPager控件时,假设我们的ViewPager有三页,当我们第一次启动ViewPager显示第一页的时候,ViewPager会预加载第二页,这样当我们向第二页滑动的时候就可以看见第二页的内容了,因为第二页的内容在第一页内容显示的时候就已经加载了。当我们滑动到第二页时,ViewPager会预加载第三页,这时ViewPager中已经保存了三页的内容:第一页,第二页和第三页,这样当我们在第二页向左或向右滑动ViewPager时能看到这三页的内容。

  我在使用ViewPager控件时遇到过这样的问题,像上面说明的那样,我在把ViewPager从第一页滑动到第三页的时候看到了这三页的内容,但是假设我在第一页中做了一些操作改变了第一页的内容,而我在第三页中也做了一些操作改变了第三页的内容,可是当我从第三页滑动到第一页时发现第一页的内容还原了,而当我再次从第一页滑动到第三页时发现第三页的内容也还原了。

  问题的根源在于ViewPage的加载页数,就是说你可以指定ViewPager预加载的页数,如果不指定,ViewPager默认加载一页。在这种情况下,ViewPage会加载当前显示页面相邻的还没有加载的页面。比如说,当前显示的是首页,因为首页的左边是没有页面的,所以ViewPager会加载第二页的内容;当ViewPager滑动到第二页的时候,因为第一页已经加载,所以不会重复加载,但是第三页还没有加载,所以ViewPager会加载第三页的内容;当ViewPager滑动到第三页的时候(假设ViewPager只有三页),因为第二页已经加载过了,而第三页的右边没有任何页面了,所以ViewPager不会加载任何界面。当从第三页滑动到第二页时,因为第三页已经加载过,所以不会重新加载,虽然第一页之前加载过,但是,ViewPager的默认加载为一页,而当ViewPager在第三页的时候第一页在默认加载之外,所以从第三页滑动到第二页的时候,ViewPager会重新加载第一页,而再从第一页滑动到第三页时是同样的道理,所以会出现我上面描述的情况。

  为了避免上述情况的发生我们可以通过调用ViewPager的setOffscreenPageLimit方法来指定加载的页数,从而得到我们想要的结果。

最新文章

  1. [知识点]平衡树之Splay
  2. Android Studio的一些快捷键
  3. Android开发探秘之二:导入存在的项目及其注意事项
  4. img图片之间的间距问题
  5. uwsgi安装过程中遇到的问题
  6. hdu 4253 Two Famous Companies BZOJ 2654 tree
  7. 原始套接字的简单tcp包嗅探
  8. 【android-cocos2d-X iconv.h】在android下使用iconv
  9. PHP Socket编程起步
  10. 将 Web 应用性能提高十倍的10条建议
  11. python爬虫数据抓取方法汇总
  12. Objective-C语言的一些基础特性
  13. http学习笔记2(URL)
  14. svn clean up 出错解决方案
  15. ftp资源调用迅雷下载
  16. 【Android Developers Training】 55. 序言:高效显示位图
  17. 201521123021第二周Java学习总结
  18. javaScript函数提升及作用域
  19. Android动画(二)-属性动画
  20. svn conflict 冲突解决

热门文章

  1. Linux网关配置(centos6)
  2. CentOS 6 中安装Node.js 4.0 版本或以上
  3. 尝试u3d中将代码与编辑器分离
  4. WPF 图片显示中的保留字符问题
  5. Excel公式设置单元格颜色
  6. 51单片机对无线模块nRF24L01简单的控制收发程序
  7. "巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场
  8. DB_oracle学习笔记_概念分析
  9. 使用getopt()处理命令行参数
  10. seajs模块化作用理解(一句话)