ViewPager + Fragment 这些坑你踩过吗?
ViewPager + Fragment,fragment 的页面不显示:
PullToReFreshView/ScrollView嵌套的ViewPager存在冲突导致其高度发生变化。这与ScrollView包含ListView或GridView的情况相类似,在上一篇中已经进行了详细阐述。
为了使 ViewPager无法正常显示,默认将其设置为隐藏状态;这会导致该App没有正确地初始化Fragment对象。举个例子来说,在我的App启动时(即OnResume执行时)会出现此问题。
在该操作中需要发起一个网络请求,在此过程中先使用mViewPager来设置页面为不可见状态(View.GONE)。随后等待网络访问返回后再次设置页面为可见状态(View.VISIBLE)。然而无论采取何种方式操作结果均无法使Fragment正常显示。经过进一步排查发现只需将页面设为不可见状态(Invisible)即可解决问题。
原因可能是由于m ViewPager显示操作导致内容被隐藏;该段代码中使用了错误的方法调用来阻止页面更新
mStep Pager的状态被设置为不可见;为了实现页面布局的动态调整,在OnDraw()方法中会被调用;使用ViewPager来绘制界面
2. Fragment生命周期中的OnResume()和OnPause()只会被首次启动Fragment时触发吗?是否只存在两个可行的解决办法呢?
1.ViewPager.setOnPagerChangedListener(new OnPagerChangedListener(
.........................
onPagerSelected(int position) {
当采用ViewPager+Fragment模式时
if(mFragmentList.get(position) instanceof xxFragment) {
................
}
}
));
该类采用的方法为fragment onhiddenchanged();机制。然而此方式仅基于Fragment界面可见/不可见状态的变化而触发(不建议使用),但若您的应用确实依赖于此类切换,则可考虑采用。
该类采用的方法为fragment onhiddenchanged();机制。然而此方式仅基于Fragment界面可见/不可见状态的变化而触发(不建议使用),但若您的应用确实依赖于此类切换,则可考虑采用。
