这是接口类
这个是登录注册所需的接口类
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