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等 常用方法封装

BaseActivity、BaseFragment等 常用方法封装 Log类的封装
  • u012149399
  • u012149399
  • 2017年03月25日 21:03
  • 758

从BaseActivity与BaseFragment的封装谈起

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

BaseActivity、BaseFragment

来自鸿洋大神的微信公众号,mark一下 开发者经常需要的就是对控件的findViewById,setOnClickListener、有的用到注解的方式绑定控件,如:Butterknife等,有的用...
  • Song_74110
  • Song_74110
  • 2017年03月30日 11:32
  • 212

项目优化-BaseActivity和BaseFragment

明眼人一看便知,直接上代码:BaseActivitypackage com.laundrylangpickcargo.activity;import android.content.Broadcast...
  • Gold_brick
  • Gold_brick
  • 2016年11月17日 18:31
  • 1313

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

绪论圣诞节怎么过?我不过圣诞节,被票圈的晒幸福虐惨了,还是在家里面总结总结自己吧。上篇文章 Android自定义View–自己撸一个柱状图也没那么难 我说过会封装一套属于自己的库,争取在元旦之前发...
  • lyhhj
  • lyhhj
  • 2016年12月25日 20:43
  • 7872

android快速开发框架,集成了底部tab键切换界面、toolbar、沉浸式状态栏、BaseActivity、BaseAdapter、BaseFragment等

本人菜鸟一枚,从事android行业以来,感觉到了身为菜鸟迫切的想去分分钟去搭建自己项目的整体框架,想当初刚毕业找到了第一份工作,自己去搭建新项目的整体外部框架,感觉真是费时,如果当你看到这篇博客时,...
  • liulei823581722
  • liulei823581722
  • 2016年10月06日 10:10
  • 863

《一个Android工程的从零开始》-6、base(五) BaseFragment封装

前面也提到了,上一篇已经将BaseActivity封装结束了,当然只是一些基本的操作,在后续的过程中,肯定会随着新功能的运用逐步去完善。 而今天我们所研究的内容呢,看到标题大家自然也就明白了,就是Ba...
  • u010513377
  • u010513377
  • 2017年07月14日 17:03
  • 462

如何在BaseFragment中直接调用BaseActivity中相关属性代码的问题

通常我们要写多个Activity时,很多属性是相同的,为了减少代码量,我们通常写一个BaseActivity来继承自Activity,再让其他的新创建的Activity继承自BaseActivity即...
  • you__are_my_sunshine
  • you__are_my_sunshine
  • 2016年06月13日 12:49
  • 1020

BaseActivity和BaseFragment 的封装

修改BaseActiviy的继承为Fragment(可以实现dialogfragment)增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本添加...
  • z4909801
  • z4909801
  • 2017年04月12日 14:03
  • 480

初识Android MVP模式

接触Android MVP模式在好早之前,一直也没有在项目中真正的实用。刚好有一个机会需要自己去做项目,然后就用上MVP。MVP用起来还是很方便,整个项目结构非常清晰,相比于传统的MVC模式,MVP清...
  • qq_24641847
  • qq_24641847
  • 2016年10月10日 17:36
  • 436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 之 Baseactivity 和BaseFragment
举报原因:
原因补充:

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