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了