用過ViewPage+Fragment組合的童鞋自然知道這個問題,沒有遇到的同學祝願你們永遠不會遇到,呵呵。直接上關鍵代碼
注釋:setUserVisibleHint每次fragment顯示與隱藏都會調用,他的調用順序由於onCreate,所以需要一些常量進行判斷
private boolean mHasLoadedOnce = false; @Override public void setUserVisibleHint(boolean isVisibleToUser) { if (this.isVisible()) { // we check that the fragment is becoming visible if (isVisibleToUser && !mHasLoadedOnce && mArrayList==null) { // async http request here mHasLoadedOnce = true; } } super.setUserVisibleHint(isVisibleToUser); }
由於setUserVisibleHint優於onCreate調用,所以當onCreate調用完畢setUserVisibleHint就不會觸發,這時需要在首個顯示的fragment調用setUserVisibleHint方法
@Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub setUserVisibleHint(true); super.onActivityCreated(savedInstanceState); }
這個是設置viewpager保留多少個顯示界面
pager.setOffscreenPageLimit(3);