android 之 Baseactivity 和BaseFragment

原创 2016年08月30日 15:30:18
  1. baseActivity
/**
 * @author 作者名 易皇星
 * @email 邮箱名 15095887072@163.com
 * @time 2016-5-14 2016-05
 * @TODO 缘分是本书,翻得不经意会错过,读得太认真会流泪!
 */

public abstract class BaseActivity extends FragmentActivity implements OnClickListener{
    protected final SparseArray<View> mViews = new SparseArray<View>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(initLayout(savedInstanceState));

        /**
         * 加载视图
         */
        initLayout(savedInstanceState);
        /**
         * 初始化控件
         */
        initView(savedInstanceState);
        /**
         * 
         * 初始化数据
         */
        initData(savedInstanceState);
        /**
         * 添加事件监听对象
         */
        initListener(savedInstanceState);



    }

    /**
     * 再也不需要每次都findViewById
     * 
     * @param resId    控件的id
     * @return
     */
    protected <V extends View> V getView(int resId) {
        return bindView(resId);

    }

    private <V extends View> V bindView(int resId) {
        View view = mViews.get(resId);
        if (view == null) {
            view = findViewById(resId);
            mViews.put(resId, view);
        }
        return (V) view;

    }

    protected abstract int initLayout(Bundle savedInstanceState);

    protected abstract void initView(Bundle savedInstanceState);

    protected abstract void initData(Bundle savedInstanceState);

    protected abstract void initListener(Bundle savedInstanceState);
    /**
     * 
     * @param view 事件监听
     */
    protected abstract void widgetClick(View view);


    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(fastClick()){
            widgetClick(v);
        }
    }

    private long lastClick =0;
    /**
     * 
     * @return 控制短时间内重复点击事件----看个人爱好而定
     */
    private boolean fastClick(){
        if(System.currentTimeMillis()-lastClick<=500){
            return false;
        }

        lastClick=System.currentTimeMillis();
        return true;

    }
}

2.baseFragment

/** 
 * @author 作者名 易皇星
 * @email  邮箱名 15095887072@163.com
 * @time   2016-5-14 2016-05
 * @TODO 缘分是本书,翻得不经意会错过,读得太认真会流泪!
 */

public abstract class BaseFragment extends Fragment implements OnClickListener{

    protected Context mcontext;

    private static final String tag = "BaseFragment";

    protected View mRootVie;

    protected final SparseArray<View> mViews = new SparseArray<View>();

     @Override
        public void onCreate( Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            mcontext=getActivity();


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {
             if (mRootView == null) {
                    mRootView = inflater.inflate(getLayoutId(), container, false);
                    onViewInflated();

                    setListener();

                }
                return mRootView;
        }
/**
 * 
 *    用get代替findViewById();
 * @param resId
 * @return
 */

        protected <V extends View> V get(int resId){
            return bindView(resId);

        }

        private <V extends View > V bindView(int resId){
            View view = mViews.get(resId);
            if(view==null){
                 view = mRootView.findViewById(resId);
                    mViews.put(resId, view);
            }
            return (V) view;

        }

        /**
         *   加载布局
         * @return
         */

        protected abstract int getLayoutId();

        /**
         * 初始化控件
         */


        protected abstract void onViewInflated();
        /**
         * 添加事件监听对象
         */
        protected abstract void setListener();


        /**
         * 
         * @param view 事件监听
         */
        protected abstract void widgetClick(View view);



    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (fastClick()) {
            widgetClick(v);
        }

    }

    private long lastClick = 0;

    /**
     * 
     * @return 控制短时间内重复点击事件----看个人爱好而定
     */
    private boolean fastClick() {
        if (System.currentTimeMillis() - lastClick <= 500) {
            return false;
        }

        lastClick = System.currentTimeMillis();
        return true;

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 项目(详解一)之—— 基础类BaseActivity/BaseFragment/总的Application

使用基础类,其他相应类只要继承基础类就行,方便以后的更改。包状态:AppApplication类:其中的onCreate添加整个工程的初始化: /** * 这里添加程序初始化内容...

为了快速Android开发整理出的一套框架,BaseFragment,BaseActivity,RecyleAdapter

一.在gradle中设置好引用的框架 下面是我开发所引用的框架 compile 'com.google.code.gson:gson:2.2.4' compile 'com.android.su...

Android谈谈封装那些事--BaseActivity和BaseFragment(二)

1.前言昨天谈了BaseActivity的封装, Android谈谈封装那些事–BaseActivity和BaseFragment(一) 有很多小伙伴提了很多建议,比如: 通用标题栏可以自定义Vi...
  • lyhhj
  • lyhhj
  • 2016年12月26日 21:06
  • 5786

BaseActivity与BaseFragment的简单封装

原文:http://blog.csdn.net/tyk0910/article/details/51355026 感觉本文写的不错。主要为了做个笔记。欢迎大家访问原文链接 这篇博客主要...

项目优化-BaseActivity和BaseFragment

明眼人一看便知,直接上代码:BaseActivitypackage com.laundrylangpickcargo.activity;import android.content.Broadcast...

【商城开发七】BaseActivity/BaseFragment篇

写这篇内容的目的就是为了记录自己的成长,从刚开始进公司开发商城项目,到现在60多天自己成长了不少,也把app的base类完全改写了。、 文章主要记录自己的成长和想法,大神请无视~~~好了开始正题 ...

BaseActivity和BaseFragment 的封装

修改BaseActiviy的继承为Fragment(可以实现dialogfragment)增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本添加...

从BaseActivity与BaseFragment的封装谈起

这篇博客主要是从BaseActivity与BaseFragment的封装开始,总结自己在实战开发中关于Fragment的注意事项以及心得体会。先看以下效果图: 这里模拟的是用户登录模块,你可能会说,...
  • tyk0910
  • tyk0910
  • 2016年05月09日 18:31
  • 26540

从BaseActivity与BaseFragment的封装谈起 不错的文章

源至Hongyang微信公众号,博客源址:从BaseActivity与BaseFragment的封装谈起 源码地址AndroidStudio开发环境:源码下载 这篇博客...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 之 Baseactivity 和BaseFragment
举报原因:
原因补充:

(最多只允许输入30个字)