Fragment切換刷新數據

在實際項目中咱們或有不少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");
    }
}
相關文章
相關標籤/搜索