Android MVP登录注册

这是接口类在这里插入图片描述
在这里插入图片描述
这个是登录注册所需的接口类

public class LoginUtils implements IMView.IModel {

private final OkHttpClient okHttpClient;

//单例
public LoginUtils(){
    okHttpClient = new OkHttpClient.Builder()
            .readTimeout(5, TimeUnit.SECONDS)
            .connectTimeout(5,TimeUnit.SECONDS)
            .build();
}
public static LoginUtils getInstance(){
    return LoginViewHolder.instance;
}
private static class LoginViewHolder{
    private static LoginUtils instance = new LoginUtils();
}
@Override
public void requestData(String phone, String pwd, final CallBack callBack) {
    FormBody formBody = new FormBody.Builder().build();
    final Request request = new Request.Builder()
            .url(Contacts.LOGIN_URL+"?phone="+phone+"&pwd="+pwd)
            .method("POST",formBody)
            .build();
    Call call = okHttpClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            String message = e.getMessage();
            callBack.responseData(message);
        }
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String string = response.body().string();
            callBack.responseData(string);
        }
    });
   }
}

这个是登录的封装Http

public class RegisterUtils implements IMView.IModel {

private final OkHttpClient okHttpClient;

//单例
public RegisterUtils(){
    okHttpClient = new OkHttpClient.Builder()
            .readTimeout(5, TimeUnit.SECONDS)
            .connectTimeout(5,TimeUnit.SECONDS)
            .build();
}
public static RegisterUtils getInstance(){
    return LoginViewHolder.instance;
}
private static class LoginViewHolder{
    private static final RegisterUtils instance = new RegisterUtils();
}
@Override
public void requestData(String phone, String pwd, final CallBack callBack) {
    FormBody formBody = new FormBody.Builder().build();
    final Request request = new Request.Builder()
            .url(Contacts.REGISTER_URL+"?phone="+phone+"&pwd="+pwd)
            .method("POST",formBody)
            .build();
    Call call = okHttpClient.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            String message = e.getMessage();
            callBack.responseData(message);
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String string = response.body().string();
            callBack.responseData(string);
        }
    });
}

}
这个是注册的封装Http

public class LoginPresenter implements IMView.IPresenter<IMView.iView> {

private IMView.iView iView;
private IMView.IModel iModel;
private WeakReference<IMView.IModel> iModelWeakReference;
private WeakReference<IMView.iView> iViewWeakReference;

@Override
public void requestMsg(String phone, String pwd) {
    if (phone!=null){
        iModel.requestData(phone, pwd, new IMView.IModel.CallBack() {
            @Override
            public void responseData(String msg) {
                iView.showData(msg);
            }
        });
    }
}

@Override
public void attachView(IMView.iView iView) {
    this.iView = iView;
    iModel = new LoginUtils();
    iModelWeakReference = new WeakReference<>(iModel);
    iViewWeakReference = new WeakReference<>(iView);
}

@Override
public void detachView(IMView.iView iView) {
    iModelWeakReference.clear();
    iViewWeakReference.clear();
}

}
这个是登录的Presenter层
public class RegisterPresenter implements IMView.IPresenter<IMView.iView> {

private IMView.iView iView;
private IMView.IModel iModel;
private WeakReference<IMView.IModel> iModelWeakReference;
private WeakReference<IMView.iView> iViewWeakReference;
@Override
public void requestMsg(String phone, String pwd) {
    if (phone!=null){
        iModel.requestData(phone, pwd, new IMView.IModel.CallBack() {
            @Override
            public void responseData(String msg) {
                iView.showData(msg);
            }
        });
    }
}

@Override
public void attachView(IMView.iView iView) {
    this.iView = iView;
    iModel = new RegisterUtils();
    iModelWeakReference = new WeakReference<>(iModel);
    iViewWeakReference = new WeakReference<>(iView);
}

@Override
public void detachView(IMView.iView iView) {
    iModelWeakReference.clear();
    iViewWeakReference.clear();
}

}

这个是注册的Presenter层

public class LoginActivity extends BaseActivity implements IMView.iView {

private Button login_button;
private TextView register_text;
private EditText phone_edit;
private EditText pwd_edit;
private CheckBox rememb;
private SharedPreferences sp;
private LoginPresenter loginPresenter;

@Override
protected void initView() {
    login_button = findViewById(R.id.login_button);
    register_text = findViewById(R.id.text1);
    phone_edit = findViewById(R.id.editText0);
    pwd_edit = findViewById(R.id.editText1);
    rememb = findViewById(R.id.checkbox0);
}
@Override
protected void initData() {
    login_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String phone = phone_edit.getText().toString();
            String pwd = pwd_edit.getText().toString();
            if (phone.equals("")&&pwd.equals("")){
                Toast.makeText(LoginActivity.this,"手机号或者密码不能为空",Toast.LENGTH_LONG).show();;
                return;
            }
            SharedPreferences.Editor edit = sp.edit();
            edit.putString("phone",phone);
            edit.putString("pwd",pwd);
            edit.putBoolean("记住密码",rememb.isChecked());

            edit.commit();
            loginPresenter.requestMsg(phone,pwd);
        }
    });
    register_text.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(LoginActivity.this,RegisterActivity.class));
            finish();
        }
    });
    sp = getSharedPreferences("login", Context.MODE_PRIVATE);
    if (sp.getBoolean("记住密码",false)){
        String pwd2 = sp.getString("pwd", "");
        pwd_edit.setText(pwd2);
        rememb.setChecked(true);
    }

    String phone2 = sp.getString("phone", "");
    phone_edit.setText(phone2);

    loginPresenter = new LoginPresenter();
    loginPresenter.attachView(this);
}
@Override
public void showData(final String msg) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(LoginActivity.this,msg,Toast.LENGTH_SHORT).show();
            Gson gson = new Gson();
            LoginBean loginBean = gson.fromJson(msg, LoginBean.class);
            String status = loginBean.getStatus();
            if (status.equals("0000")){
                Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(LoginActivity.this,MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    });
}
@Override
protected int setSelfView() {
    return R.layout.activity_login;
}

}
这个是登录功能的activity

public class RegisterActivity extends BaseActivity implements IMView.iView {

private LoginPresenter loginPresenter;
private Button login_button;
private TextView register_text;
private CheckBox rememb;
private EditText phone_edit;
private EditText pwd_edit;
private RegisterPresenter registerPresenter;

@Override
protected void initView() {
    //登录按钮
    login_button = findViewById(R.id.register_button);
    //注册
    register_text = findViewById(R.id.text1);
    phone_edit = findViewById(R.id.editText0);
    pwd_edit = findViewById(R.id.editText1);

    //记住密码
    rememb = findViewById(R.id.checkbox0);
    SharedPreferences sp;
    login_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String phone= phone_edit.getText().toString();
            String pwd= pwd_edit.getText().toString();
            if(phone.equals("") && pwd.equals("")){
                Toast.makeText(RegisterActivity.this, "手机号或密码为空", Toast.LENGTH_SHORT).show();
                return;
            }//传数据15036311244
            registerPresenter.requestMsg(phone,pwd);
        }
    });
    register_text.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);
            startActivity(intent);
            finish();
        }
    });
}

@Override
protected int setSelfView() {
    return R.layout.activity_register;
}

;

@Override
protected void initData() {
    registerPresenter = new RegisterPresenter();
    registerPresenter.attachView(this);
}

@Override
public void showData(final String msg) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(RegisterActivity.this,msg,Toast.LENGTH_SHORT).show();
            Gson gson=new Gson();
            LoginBean loginBean = gson.fromJson(msg, LoginBean.class);
            String status = loginBean.getStatus();
            if(status.equals("0000")){
                Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);
                startActivity(intent);
                finish();

            }
        }
    });
}

}

这个是点击注册注册成功后跳转到登录页面的Activity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值