Android小知識(4)

瞭解Fragment的onResume和onPause方法

Fragment裏的onResume和onPause方法其實是Activity的方法,所以有時候切換到當前Fragment時並不會調用onResume。

要實現與onResume和onPause一樣的效果,可以這樣寫

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        // 因爲setUserVisibleHint方法在onViewCreate之前調用,所以會存在getActivity()==null的情況
        if (getActivity() != null) {
            if (isVisibleToUser) {
                // 相當於Fragment的onResume
                httpGetUserInfo();
            } else {
                // 相當於Fragment的onPause
            }
        }
    }

而且FragmentPagerAdapter裏切換fragment的時候,如果fragment存在,則設置setUserVisibleHint和setMenuVisibility來顯示,因此也不會走fragment的onDestroyView方法。

以下是FragmentPagerAdapter源碼裏的方法

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        // 此處代碼省略...
        if (fragment != mCurrentPrimaryItem) {
            fragment.setMenuVisibility(false);
            fragment.setUserVisibleHint(false);
        }
        // 此處代碼省略...
        return fragment;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章