zoukankan      html  css  js  c++  java
  • Android fragment 回调函数改进

    由于fragment的onResume()等回调的调用时机与Activity不一样,导致用起来比较麻烦,所以我重新封装了一下回调函数,十分简单。

    使用时只需要继承此基类,使用onFragmentXXX系列回调即可。

    public class AbsFragment extends Fragment {
        
        /*-------------------------------------
         * 属性
         *-------------------------------------*/
        /**是否已经onResume()了*/
        private boolean isResume = false;
        /**setUserVisibleHint(boolean)传入的值*/
        private boolean isVisbleToUser = false;
    
        /*-------------------------------------
         * protected方法
         *-------------------------------------*/
        /**
         * Fragment创建时调用的函数,建议子类重写这个方法因为生命周期比较简单
         * @param savedInstanceState
         */
        protected void onFragmentCreate(Bundle savedInstanceState) {
            
        }
        
        /**
         * Fragment销毁时调用的函数,建议子类重写这个方法因为生命周期比较简单
         * @param savedInstanceState
         */
        protected void onFragmentDestroy() {
            
        }
        
        /**
         * Fragment可见时调用的函数,建议子类重写这个方法因为生命周期比较简单
         * @param savedInstanceState
         */
        protected void onFragmentResume() {
            
        }
        
        /**
         * Fragment不可见时调用的函数,建议子类重写这个方法因为生命周期比较简单
         * @param savedInstanceState
         */
        protected void onFragmentPause() {
            
        }
        /*-------------------------------------
         * public方法
         *-------------------------------------*/
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            onFragmentCreate(savedInstanceState);
        }
    
        @Override
        public void onDestroy() {
            onFragmentDestroy();
            
            super.onDestroy();
        }
        
        @Override
        public void onResume() {
            super.onResume();
            
            isResume = true;
            if(isVisbleToUser) {
                onFragmentResume();
            }
        }
    
        @Override
        public void onPause() {
            isResume = false;
            if(isVisbleToUser) {
                onFragmentPause();
            }
            
            super.onPause();
        }
        
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            
            this.isVisbleToUser = isVisibleToUser;
            if(isResume) {
                if(isVisibleToUser) {
                    onFragmentResume();
                } else {
                    onFragmentPause();
                }
            }
        }
    
    }
    

      

  • 相关阅读:
    leetcode网解题心得——61. 旋转链表
    leetcode面试题 02.06. 回文链表,解题心路
    池化技术——自定义线程池
    使用java基础实现一个简陋的web服务器软件
    操作系统中的经典问题——生产者消费者问题(两种方式实现)
    javascript垃圾收集 [重温JavaScript基础(三)]
    JavaScript 执行环境以及作用域链[重温JavaScript基础(二)]
    基本类型和引用类型的值 [重温JavaScript基础(一)]
    css中的函数
    z-index的展现形式
  • 原文地址:https://www.cnblogs.com/alexcai/p/3515791.html
Copyright © 2011-2022 走看看