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了