【重大bug】viewpager使用的时候加载数据应该在setOnPageChangeListener里的onPageSelected里加载,我说怎么首页有数据,第二页就是空白,就是加载了但是数据不显示

 mPagerTab.setOnPageChangeListener(new OnPageChangeListener() {

             @Override
public void onPageSelected(int position) {
BaseFragment fragment = FragmentFactory
.createFragment(position);
// 开始加载数据
fragment.loadData();
} @Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
} @Override
public void onPageScrollStateChanged(int state) {
}
});

而不是viewpager每个页面的fragment的oncreateview方法里加载数据,错误写法:

    @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// TextView view = new TextView(UIUtils.getContext());
// view.setText(this.getClass().getSimpleName());
// return view; mLoadingPage = new LoadingPage(UIUtils.getContext()) {
@Override
public StateResult onLoadData() {
return BaseFragment.this.onLoadData();
} @Override
public View onCreateSuccessView() {
return BaseFragment.this.onCreateSuccessView();
}
};
mLoadingPage.loadData();//开始加载数据
return mLoadingPage;
}

因为你后面还要return一个布局,所以你的布局都还没弄好,你加载数据干嘛咯?

但是Activity的oncreate方法里可以加载数据,只要先设置好布局

 setContentView(mLoadingPage)

就可以了:

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); mLoadingPage = new LoadingPage(this) { @Override
public ResultState onLoad() {
return HomeDetailActivity.this.onLoad();
} @Override
public View onCreateSuccessView() {
return HomeDetailActivity.this.onCreateSuccessView();
}
}; // setContentView(R.layout.activity_main);
setContentView(mLoadingPage);// 直接将一个view对象设置给activity
// 开始加载网络数据
mLoadingPage.loadData();
}

PS:

1.setOnPageChangeListener已经过时了,应该用addOnPageChangeListener代替

2.一般我们viewpager都是搭配PagerIndicator或者pagerTab,所以要添加页面切换监听的话,是要给PagerIndicator或者pagerTab添加,否则就会有问题——

问题1)pagerTab上该highlight的字体不highlight

问题2)刚打开应用,onPageSelected(int position)方法不会被回调,切换页面的时候才被回调。

所以本帖所遇到的bug正确的解决方法是:

1.给PagerIndicator或者pagerTab,setOnPageChangeListener

2.在onPageSelected(int position)方法里加载数据

【重大bug】viewpager使用的时候加载数据应该在setOnPageChangeListener里加载的更多相关文章

  1. viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。

    从newsPager中得到newsDetailTitles标题的详细内容,这是通过构造器传过来的.打印日志78行能打印,45行打印出来共size是12.但是程序出现了异常java.lang.Illeg ...

  2. Android之Viewpager+Fragment实现懒加载

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用.而ViewPager默认会缓存三页数据,即:Viewpager每加载一个Fra ...

  3. Android ViewPager Fragment使用懒加载提升性能

     Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...

  4. echarts官网上的动态加载数据bug被我解决。咳咳/。

    又是昨天,为什么昨天发生了这么多事.没办法,谁让我今天没事可做呢. 昨天需求是动态加载数据,画一个实时监控的折线图.大概长这样. 我屁颠屁颠的把代码copy过来,一运行,caocaocao~bug出现 ...

  5. 巧力避免ViewPager的预加载数据,Tablayout+Fragment+viewPager

    问题描述 最近在进行一个项目的开发,其中使用到了Tablayout+Fragment+viewPager来搭建一个基本的框架,从而出现了设置数据适配器的时候,item的位置错乱问题.我打印log日志的 ...

  6. Android viewpager + fragment取消预加载

    1,在fragment中重写setUserVisibleHint方法private boolean isVisibleToUser;@Overridepublic void setUserVisibl ...

  7. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...

  8. iscroll5 上拉,下拉 加载数据

    我这里的思路是上拉时候只是加载第一页的内容,可根据实际情况修改其中的代码.请勿照搬.样式没怎么调,可以加载gif动画.1.没有数据时候,下拉可以加载数据.2.没有数据时候,点击也可以加载数据.3.其余 ...

  9. Android中GridView滚动到底部加载数据终极版

    之前在项目中有一个需求是需要GridView控件,滚动到底部自动加载.但是呢GridView控件并不提供诸如ListView监听滚动到底部的onScrollListener方法,为了实现这样一个效果, ...

随机推荐

  1. XPath相关笔记

    <?xml version="1.0" encoding="utf-8" ?> <employees>   <employee o ...

  2. js实现搜索框响应回车键

    1.HTML页面, 注意:不要用使用form标签. Html代码 收藏代码<input type="text" name="keyword" id=&qu ...

  3. 一个突发性的误解C# 引用类型

    最近再看IOCP,结果里面的一个赋值过程,造成了误解. test t1 = new test(); test t2 = new test(); test t4 = new test(); t1= t2 ...

  4. html5权威指南:定制input元素

    第十三章:定制Inpur元素,http://www.cnblogs.com/polk6/p/5417921.html#Menu3-New input标签最全面的type属性:http://blog.s ...

  5. AnimatorController动画遮罩

    游戏中,我们的人物在某些时候,可能在一个时间点在做两件事,这样就需要同时播放两个动画,但我们肯定不能简单将其叠加,比如移动着开枪.攻击.挥手等等,那么在Unity中我们应该怎样实现这样的功能呢?且听我 ...

  6. shell脚本学习(三)

    1.在grep中, ^标记着单词的开始, $ 标记着单词的结束. 查看一个单词是否在linux自带的词典中,脚本如下: #bin/sh #文件名:checkword.sh word=$1 grep & ...

  7. Worker+MQ解惑

    用Worker来保证数据的一致性,再加上MQ来便于水平扩展,也提升了Worker的效率.这就是传说中的Worker+MQ,又叫做可靠消息方式.另外,将任务的查询和执行分工,形成父子任务,达到真正的分布 ...

  8. Linode开通新加坡机房:vps速度快,价格不变!

    vps服务商linode终于开通了新加坡机房中心,这是linode全球第7个机房,满足日益增长的东南亚市场需求.印度.中国.澳大利亚及周边国家都有很好的用户体验. linode新加坡机房采用思科Cis ...

  9. ubuntu下的ssh工具gstm

    (转自:http://www.nenew.net/ubuntu-ssh-gstm.html) 首先安装: sudo apt-get install gstm 就可以安装,当然你也可以到http://s ...

  10. C#第八天

    ArrayList ArrayList list=new ArrayList(): list.Add()           //添加单个元素 list.AddRange()   //添加集合元素 l ...