Fragment可见不可见时的生命周期回调函数

    技术2022-07-21  82

    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);

     

    感谢这位博主  解决了我的问题 ———————————————— 版权声明:本文为博主「逊时志敏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/xunshishi/article/details/52268940

    Processed: 0.011, SQL: 9