fragment可见和不可见的方法

项目中经常会碰到,需要在fragment失去焦点和获得焦点的方法中进行一些设置,但是fragment没有onpause()和onResume()方法,你重写的这两个方法,都是fragment依附的activity的生命周期。

那么需要fragment有像activity生命周期onpause()和onResume()这样的方法怎么办,谷歌为我们提供了setUserVisibleHintonHiddenChanged这两个方法,这两个方法的使用场景是有所不同的!

  • setUserVisibleHint的使用
  • > FragmentPagerAdapter+ViewPager的使用场景

    使用FragmentPagerAdapter+ViewPager时,切换回上一个Fragment页面时(已经初始化完毕),不会回调任何生命周期方法,也不会走onHiddenChanged()方法,所以在viewPage配合fragment搭建页面的情况下,切换页面时候,只能使用setUserVisibleHint方法。

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            // 相当于onResume()方法
        } else {
            // 相当于onpause()方法
        }
    }
  • onHiddenChanged的使用
  • 使用add()+show(),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("界面可见");

        }
    }

猜你喜欢

转载自blog.csdn.net/zane_xiao/article/details/52291648
今日推荐