Fragment可見/不可見時的生命週期回調函數

Fragment可見/不可見時的生命週期回調函數
項目中經常會碰到,需要在fragment失去焦點和獲得焦點的方法中進行一些設置,但是fragment沒有onpause()和onResume()方法,你重寫的這兩個方法,都是fragment依附的activity的生命週期。

那麼需要fragment有像activity生命週期onpause()和onResume()這樣的方法怎麼辦,谷歌爲我們提供了setUserVisibleHint和onHiddenChanged這兩個方法,這兩個方法的使用場景是有所不同的!

 

1.FragmentPagerAdapter+ViewPager的使用場景
● 使用setUserVisibleHint

使用FragmentPagerAdapter+ViewPager時,切換回上一個Fragment頁面時(已經初始化完畢),不會回調任何生命週期方法,也不會走onHiddenChanged()方法,所以在viewPage配合fragment搭建頁面的情況下,切換頁面時候,只能使用setUserVisibleHint方法。

        @Override

        public void setUserVisibleHint(boolean isVisibleToUser) {

           super.setUserVisibleHint(isVisibleToUser);

           if (isVisibleToUser) {

               // 相當於onResume()方法

           } else {

               // 相當於onpause()方法

           }

        }

 

2.Fragment ,add()+show()的使用場景
● 使用onHiddenChanged的使用

hide()跳轉新的Fragment時,舊的Fragment回調onHiddenChanged(),不會回調onStop()等生命週期方法,而新的Fragment在創建時是不會回調onHiddenChanged(),所以一般會和onresume()方法配合使用。具體場景自己來判斷。

       @Override

        public void onHiddenChanged(boolean hidden) {

           if (hidden) {

                //相當於Fragment的onPause

                    System.out.println("界面不可見");

               } else {

           // 相當於Fragment的onResume

             System.out.println("界面可見");

           }

        }

 

    Fragment內控制切換Fragment!

    //確定後跳到抓取圖片碎片:Resultragment

    ManagerActivity managerActivity =(ManagerActivity) getActivity();

    managerActivity.setSelect(0);//切換到抓取成功fragment!

    前提是主Activity內寫好了選擇碎片的方法 如setSelect(0);

 

感謝這位博主  解決了我的問題
————————————————
版權聲明:本文爲CSDN博主「遜時志敏」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xunshishi/article/details/52268940

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章