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

      

  • 相关阅读:
    vue插件(还真是第一次接触)
    Vue父组件向子组件传值以及data和props的区别
    Vue v-bind与v-model的区别
    vue 异步渲染
    vue动态加载不同的组件(分内部和外部组件)
    vue自定义组件的递归
    作用域插槽模板迭代的次数,取决于组件内部独立slot的数量
    说说 Vue.js 中的 v-cloak 指令
    C语言 system
    C语言 有符号、无符号
  • 原文地址:https://www.cnblogs.com/alexcai/p/3515791.html
Copyright © 2011-2022 走看看