天天看點

關于Fragment中的onResume方法

前因後果:

開發中使用Activity中通過ViewPager嵌套不同的fragment但是有個問題是當傳回Fragment界面時資料沒有實時重新整理,查了很久以為是Fragment中的onResume()方法的問題,最後才知道原理:

Fragment依托于Activity,其内部的OnResume和OnPause方法真正歸屬于其依托的Activity,在Activity可見性變化的時候,才會調用這兩個方法;如果在Activity中包含一個ViewPager + 多個Fragment的結構,在Fragment的切換過程中,因為Activity一直顯示,是以Fragment切換是不會調用OnResume和OnPause方法的,當然第一次建立Fragment的時候是會調用的。

那麼問題來了,我們想要在子Fragment對使用者可見性變化時處理一些邏輯,該怎麼辦呢?

當然是有辦法的!

解決之道:

Fragment中有setUserVisibleHint這個方法,其效果和Activity的OnResume和OnPause方法一樣,那麼我們看下他的使用方法。

@Override 

  public void setUserVisibleHint(boolean isVisibleToUser) { 

       super.setUserVisibleHint(isVisibleToUser); 

       if (isVisibleToUser) { 

           //相當于Fragment的onResume,為true時,Fragment已經可見 

       } else { 

           //相當于Fragment的onPause,為false時,Fragment不可見

       } 

   }
           

繼續閱讀