ViewPager + Fragment 这些坑你踩过吗?

来源:互联网 发布:orange 软件 编辑:程序博客网 时间:2024/04/27 20:25

1.ViewPager + Fragment,fragment 的页面不显示:

1.PullToReFreshView/ScrollView 嵌套ViewPager有冲突导致ViewPager高度变化,这一点和ScrollView包含ListView/GridView一个道理,在上一篇阐述过了。

2.在ViewPager的宿主Activity中设置mViewPager.setVisibility(View.GONE); 导致ViewPager并没有初始化Fragment.  举例来说:我在ViewPager的宿主Activity的OnResume();

里需要发起网络请求,同时mViewPager.setVisibility(View.GONE); ,等待网络访问返回再设置mViewPager.setVisibility(View.VISIBLE);结果无论如何Fragment都不显示,后来改为mViewPager.setVisibility(View.INVISIBLE); 就Ok了。 

原因“:mViewPager.setVisibility(View.GONE);  ViewPager不会绘制界面 即 OnDraw();不会执行

    mViewPager.setVisibility(View.INVISIBLE);   ViewPager绘制界面 即 OnDraw();会执行


2. Fragment  生命周期中的OnResume(); OnPause(); 只会在第一次进入Fragment的时候才会被执行,怎么办? 两种解决方案(我只知道两种,别喷)。

1.ViewPager.setOnPagerChangedListener(new OnPagerChangedListener(

.........................

onPagerSelected(int position) {

/**如果是ViewPager+Fragment的模式,一般都会有一个FragmentList,这里为了把Fragment OnResume中执行的代码放到这里使用如下方法**/

if(mFragmentList.get(position) instanceof  xxFragment) {

................

}

}

));

2.fragment onhiddenchanged();方法,但是这种实现是建立的在Fragment的界面在可见不可见之间变化才会被执行(不可取),但是如果你的Fragment刚好需要在可见不可见之间变化那就OK了

1 0
原创粉丝点击