【重大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. Strusts2--课程笔记8

    文件的和上传和下载: (1)文件的上传: Struts是通过拦截器实现文件上传的,而默认拦截器栈中包含了文件上传拦截器,故表单通过Struts2可直接将文件上传,其底层是通过apache的common ...

  2. 下载、安装jdk8(Windows下)并配置变量环境

    一.官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 点击下图中的downloa ...

  3. 深入分析Java Web开发

    Web请求过程 如何发起请求:browser,httpclient http解析:chrome ,cache Dns域名解析:域名缓存 cdn:负载,动态加速,回源 Java I/O I/0类库的基本 ...

  4. MySQL5.5.28启动错误 The server quit without updating PID file

    今天重新安装了一次 MySQL5.5.28 ,但启动的时候老是报错 Starting MySQL.. ERROR! The server quit without updating PID file ...

  5. HDU 1956 POJ 1637 Sightseeing tour

    混合图的欧拉回路判定方法: 1.首先判断基图是否连通,不连通的话表示不可能,否则进入下一步. 2.对于无向边,随便确定一个方向 3.确定好了之后,整张图就变成了有向图,计算每个节点的入度与出度 4.如 ...

  6. 一键批量ping任意ip段的存活主机

    =======================by me===================================== @echo offecho.color FC for /f %%i ...

  7. C++构造与析构

    C++语言构造函数与析构函数需要注意的地方. 构造 考虑以下定义 struct Node { char *name; int value; Node() { name = ]; strcpy(name ...

  8. Markdown 基础

    How to use Markdown H1 text. H2 text. H3 text. H4 text. H5 text. H6 text. Text This is italic text. ...

  9. 一、ASP.NET Routing路由(深入解析路由系统架构原理)

    阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模型的入口 4.ASP.NET Routing 路由对象模型的内部结构 4 ...

  10. C语言中字符串

    #include <stdio.h> int main(){ char s[] = "ABCD"; char *p; for(p=s; p<s+4; p++) { ...