Advertisement

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界面可见/不可见状态的变化而触发(不建议使用),但若您的应用确实依赖于此类切换,则可考虑采用。

全部评论 (0)

还没有任何评论哟~