【Android 进阶】Activity 、Fragment 和 Presenter 的高层封装

本文介绍了如何在Android项目中进行Activity、Fragment和Presenter的高层封装,以减少重复代码,提高代码复用。通过创建BaseActivity、BaseFragment和BasePresenter作为基类,实现了通用功能的抽取,如ButterKnife控件绑定、Component注入等。子类只需继承并实现抽象方法,即可轻松利用封装好的功能。同时,文中强调了封装应根据实际业务需求和个人喜好进行调整。
摘要由CSDN通过智能技术生成

前言

日常开发中,每个 Activity、Fragment 中都有很多共同的部分,比如 Toast、ButterKnike、startActivity、初始化 init() 等。

其实可以根据 Activity 封装一个 BaseActivity,把 ButterKnike 抽取上去,把 注入对象 抽取上去:譬如 presenter 对象。还可以把 Component 抽取到父类(包括通用的 getApplication)。

这样做的目的就是一次封装,方便子类使用,不需要在每个 Activity、Fragment 中写总是写重复的代码了,把重复的工作都抽出来放在父类,自己就继承父类即可。

下面就项目中的封装简单介绍下如何封装 Activity、Fragment、Presenter.

Acitvity 的封装与使用

BaseActivity

继承 AppCompatActivity,重写 onCreate() 方法,并设置布局文件,但是这个布局应该由子类提供(每个 Activity 的布局都不一样),所以代码中定义一个抽象方法 setLayout() 给子类去实现,提供自己的布局。

其他由子类提供的东西,都可以在父类定义一个抽象方法,让子类实现即可。当然,该封装的 Activity 得声明为 abstract 类型的。

也可以提供一些常用的方法:startActivity()

另外,还可以把公共的东西抽取到父类 onCreate() 方法中,如:ButterKnife 控件绑定、Component 的注入。

public abstract class BaseActivity<T extends BasePresenter> extends AppCompatActivity {
   

    private Unbinder mUnbinder; //用于解除 butterknife 的绑定

    private AppApplication mApplication;  //很常用,不解释

    @Inject
    T mPresenter ;      //把 Presenter 抽出来,泛型表示,因为每个子类需要的 presenter 都不确定

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {

        //字体图标的一些渲染
        LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));
        super.onCreate(savedInstanceState);

        setContentView(setLayout());

        mUnbinder = ButterKnife.bind(this);

        this.mApplication = (AppApplication) getApplication();     //常用的东西直接在父类里面获取好,子类直接享用

        setupAcitivtyComponent(mApplication.getAppComponent());

        init(); //在父类留下公共的方法,让子类去实现
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        if(mUnbinder !=Unbinder.EMPTY){
            mUnbinder.unbind();
        }
    }


//    protected  void  startActivity(Class c){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值