Android MVPBuilder第二篇

- [ MVPBuilder Github 下载地址]


该篇所做的事情是建立一个BaseActivity,和建立一个MainActivity。看看现在的目录结构,为了不影响初学者,我把这篇不关注的文件都先画了横线。
这里写图片描述

可以看到我们正式在View和Presenter目录下开始写东西了。首先我们要定位我们今天要写什么功能,再思考这个功能怎么写?

功能描述:

在MainActivity中编写一个按钮,作为APP的入口Activity,我想在这里编写一系列的按钮,点击按钮会跳转到相应的demo功能展示(这点nohttp的例子就做得很好)

接口IActivity

该工程所有Activity类都要实现的接口,接口里面有2个方法,初始化视图,初始化数据。

public interface IActivity {

    void initView();//对界面元素的初始化,findviewbyid
    void initData();//对界面数据的初始化
}

视图基类BaseActivity

创建视图基类BaseActivity,基类可以做一些基本的操作,例如进入页面前先判断用户是否合法,Token有没有过期,或者封装一些输出界面的方法,例如吐司等,按需添加。工程必须要有基类,试想一下以下场景,你编写了100个Activity,然后测试的时候发现有些页面总是莫名其妙的报错,最后发现是页面没有特意去获取用户的合法密钥(Token),好吧,要补充一个先判断该用户是否合法的功能然后才显示页面。
1. 如果没有基类,你写1次加复制粘贴99次的工作量。
2. 如果有基类,你可以直接在基类里面写这个判断

public class BaseActivity extends AppCompatActivity implements IActivity,View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

        initView();
        initData();
    }

    @Override
    public void initView() {

    }

    @Override
    public void initData() {

    }

    @Override
    public void onClick(View v) {

    }
}

BaseActivity现在实现了View.OnClickListener和IActivity,也就是说我工程里所有Activity都至少有这3个方法,初始化界面,初始化数据,页面点击响应。

接口IMainActivity

public interface IMainActivity extends IActivity{
    void gotoLoginExample();
}

MainActivity

public class MainActivity extends BaseActivity implements IMainActivity{

    Button btnLogin;
    MainP mainP;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }

    @Override
    public void gotoLoginExample() {
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }

    @Override
    public void initView() {
        btnLogin = (Button)findViewById(R.id.loginBtn);
    }

    @Override
    public void initData() {

    }

    @Override
    public void onClick(View v) {
        super.onClick(v);
        switch (v.getId()){
            case R.id.loginBtn:
                mainP.gotoLogin();
                break;
            default:
                break;
        }
    }
}

MainP

public class MainP implements IMain{
    IMainActivity view;

    @Override
    public void gotoLogin() {
        view.gotoLoginExample();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值