android 基类BaseFragment的简单使用

作者: 666swb | 来源:发表于2016-05-31 14:17 被阅读5056次

    目的: 当有多个Fragment使用时,提供一个抽象基类BaseFragment, 来封装一下方法,使其Fragment的使用简单化。

    解决问题:

    1: 使用getActivtiy() 为空的情况,
    2: 简化了onCreateView, 只需要提供布局id就好了

    像添加和移除fragment的情况,这里没有列出,后续。。。

    package com.ttjjttjj.recyclerviewtest.fragment;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    /**
     * Created by Administrator on 2016/5/31 0031.
     *
     *  基类fragment
     *
     *  @author tj
     *
     */
    public abstract class BaseFragment extends Fragment {
    
        protected Activity mActivity;
    
        /**
         * 获得全局的,防止使用getActivity()为空
         * @param context
         */
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            this.mActivity = (Activity)context;
        }
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container
                , Bundle savedInstanceState) {
    
            View view = LayoutInflater.from(mActivity)
                    .inflate(getLayoutId(), container, false);
            initView(view, savedInstanceState);
    
            return view;
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            initData();
        }
    
        /**
         * 该抽象方法就是 onCreateView中需要的layoutID
         * @return
         */
        protected abstract int getLayoutId();
    
        /**
         * 该抽象方法就是 初始化view
         * @param view
         * @param savedInstanceState
         */
        protected abstract void initView(View view, Bundle savedInstanceState);
    
        /**
         * 执行数据的加载
         */
        protected abstract void initData();
    }
    
    

    如果有什么其他好的意见的,希望留言,一起学习,谢谢!

    相关文章

      网友评论

        本文标题:android 基类BaseFragment的简单使用

        本文链接:https://www.haomeiwen.com/subject/oaicdttx.html