• 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();
                }
            }
        }
    
    }
    

      

  • 相关阅读:
    java 反射 处理 空值
    jquery之data()
    jquery里面的$.each()方法
    Normalize.css 样式作用,及使用方法
    robots.txt、humans.txt、.editorconfig、.gitignore、LICENSE.txt、README.md、CHANGLOG.md
    常见的js算法
    javascript设计模式详解
    ES6的相关信息
    轮播图插件
    webstrom随手笔记
  • 原文地址:https://www.cnblogs.com/alexcai/p/3515791.html
Copyright © 2020-2023  润新知