MVP框架的上手和应用适合初学者!!

本文详细介绍了Android应用中注册功能的具体实现过程,包括界面布局、按钮点击事件处理、数据验证及与服务器交互等内容。通过MVC设计模式分离业务逻辑,确保代码的可维护性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//主页面的代码

public class RegisterActivity extends AppCompatActivity implements IRegiView {
    private EditText register_name;
    private EditText register_pwd;
    private Button register_btn;
    private RegPresenter presenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        //初始化控件
        initView();
        //控件的操作
        operation();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {

            }
        });
    }
    //控件的操作
    private void operation() {
        register_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    //注册的操作
                RegOperation();
            }
        });
    }


    //初始化控件
    private void initView() {
        presenter = new RegPresenter(this);
        register_btn = findViewById(R.id.register_btn);
        register_name = findViewById(R.id.register_name);
        register_pwd = findViewById(R.id.register_pwd);
    }
    //注册的操作
    private void RegOperation() {
        presenter.register(register_name.getText().toString(),register_pwd.getText().toString());

    }
    @Override
    public void mbVerify() {
        Toast.makeText(RegisterActivity.this,"用户名不能为空",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void mboVerify() {
        Toast.makeText(RegisterActivity.this,"用户名不合法",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void pwVerify() {
        Toast.makeText(RegisterActivity.this,"密码不能为空",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void success(RegBean regBean) {
        Toast.makeText(RegisterActivity.this,"成功"+regBean,Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
        startActivity(intent);
        finish();

    }

    @Override
    public void faliure(String string) {

    }

}

//model层的代码

public class RegModel {
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };
    //  请求接口数据
    public void register(String mobile, String pwd, final RegCallBack regCallBack) {
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();
        FormBody formBody  = new FormBody.Builder()
                .add("mobile",mobile)
                .add("password",pwd).build();
        Request request = new Request.Builder()
                .url(Api.Register).post(formBody).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
           //成功
            @Override
            public void onFailure(Call call, IOException e) {
                if (regCallBack!=null){
                    regCallBack.failure("请求失败");
                }
            }
            //失败
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //得到响应体json
                //切换线程把bean类回调给presenter
                if (response.code()==200){
                    String result =response.body().string();
                    parseJson(result,regCallBack);
                }
            }
        });

    }
    //解析json
    private void parseJson(String result, final RegCallBack regCallBack) {
        if (result!=null){
           final RegBean regBean = new Gson().fromJson(result,RegBean.class);
            handler.post(new Runnable() {
                @Override
                public void run() {
                    if (regCallBack!=null){
                        regCallBack.success(regBean);
                    }
                }
            });
        }
    }

    public interface RegCallBack{
        void failure(String error);
        void success(RegBean regBean);
    }
}

//view层的代码

public interface IRegiView {
    //校验手机号
    void mbVerify();
    // /校验手机号合法
    void mboVerify();

    //校验密码
    void pwVerify();
    //请求成功
    void success(RegBean regBean);
    //失败
    void faliure(String string);

}

//p层的代码

public class RegPresenter {
    public RegModel regModel;
    private IRegiView iRegiView;
    public RegPresenter(IRegiView iRegiView) {
        this.iRegiView=iRegiView;
        this.regModel = new RegModel();

    }

    //注册的逻辑
    public void register(String mobile, String pwd) {
        //判断是否等于空
        if (TextUtils.isEmpty(mobile)) {
                iRegiView.mbVerify();
            return;
        }
        if (!RegUtils.checkCellphone(mobile)){
            iRegiView.mboVerify();
            return;
        }
        if (TextUtils.isEmpty(pwd)) {
            iRegiView.pwVerify();
            return;
        }
        regModel.register(mobile, pwd, new RegModel.RegCallBack() {
            @Override
            public void failure(String error) {
            iRegiView.faliure(error);
            }

            @Override
            public void success(RegBean regBean) {
                iRegiView.success(regBean);
            }
        });
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值