在實際項目中咱們或有不少Fragment,並且會頻繁切換。怎麼能讓他們切換完成同時達到刷新效果呢。網絡
Activity中有onRestart方法那Fragment怎麼辦呢?ide
憋着急!看下面生命週期
//切換Fragment刷新 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { //當此fragment正當前顯示是,執行該操做, //網絡請求或者刷新數據 } else { // 至關於Fragment的onPause // System.out.println("ChatFragment ---setUserVisibleHint---isVisibleToUser - FALSE"); } }
預加載fragment時 不會執行setUserVisibleHint(boolean isVisibleToUser) 該方法,只有當切換到fragment2時才運行setUserVisibleHint(boolean isVisibleToUser)it
setUserVisibileHint() 來知道當前一個fragment對用戶來講是隱藏仍是顯示,這個方法僅僅工做在FragmentPagerAdapter中,不能被使用在一個普通的activity中。List
此方案侷限在於此方法的第一次系統調用甚至早於Fragment的onCreate方法,故其第一次調用時isVisibleToUser值總爲false,影響咱們對生命週期順序的斷定;fragment
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_exam, container, false); // 標記 isCreated = true; return rootView; }
//切換Fragment刷新 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (!isCreated) { return; } if (isVisibleToUser) { //當此fragment正當前顯示是,執行該操做, //網絡請求或者刷新數據 Log.e("TAG", "onStart: ++++++++++++++++++" ); //ListView適配器刷新,更新答題狀態顯示 adapter1.notifyDataSetChanged(); } else { // 至關於Fragment的onPause // System.out.println("ChatFragment ---setUserVisibleHint---isVisibleToUser - FALSE"); } }