ViewPager + Fragment 這些坑你踩過嗎?

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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章