Android开发 抽出BaseActivity

直接看代码:

package com.norma.note;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import com.orhanobut.logger.Logger;


import butterknife.ButterKnife;


public abstract class BaseActivity extends AppCompatActivity
{
    //为了不重复的编写ButterKnife.bind(this);
    @Override
    public void setContentView(int layoutResID)
    {
        super.setContentView(layoutResID);
        ButterKnife.bind(this);
    }


    //为了不重复的编写ButterKnife.bind(this);
    @Override
    public void setContentView(View view)
    {
        super.setContentView(view);
        ButterKnife.bind(this);
    }


    //为了不重复的编写ButterKnife.bind(this);
    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params)
    {
        super.setContentView(view, params);
        ButterKnife.bind(this);
    }


    //初始化Activity(编写所有的Activity都需要初始化的内容)
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //这个方法在这里被全部重写了,包括它全部的重载
        setContentView(getResLayout());
        //初始化日志工具
        initLogger();


        initActivity();
    }


    //代替onCreate成为个性化的初始化工具,在继承之后可以被实现
    protected abstract void initActivity();


    //初始化日志工具,如果你也使用Logger的话
    private void initLogger()
    {
        Logger.init("logs");
        Logger.t(this.getClass().getName());
    }


    //必须被实现,因为onCreate需要调用它获得布局文件的id
    //实现之后你需要把他的返回值设置为当前Activity的R.Layout.XXX
    public abstract int getResLayout();
}

1.如果你想要用Butterknife请重写setContentView方法,三个重载都要重写,指不定会什么时候用到

2.如果你想让MianActivity等Activity中连OnCreate都没有,那就重写OnCreate,通过实现这里定义的getResLayout方法,传入布局R.layout.XXX给OnCreate

3.编写initActivity是为了方便你初始化某些变量,这样你就:不会因为没有OnCreate而烦恼;也不用总是看见它的重复代码

注意:initActivity可以不写为抽象方法,因为,你不一定会用到它,我一会去改自己的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值