MVP实现登录记住密码

布局,主要有输入账号和密码的输入框以及记住密码的复选框,和点击登录的按钮即可

<?xml version="1.0" encoding="utf-8"?>













接下来用MVP实现主要功能了

view层

public interface LoginView {
void onLoginSeccess(String result);
void onLoginFailed(String msg);
}
model层

public class LoginModel {
public boolean onPostExecute(String name,String pwd){
if (name.equals(“Baway”) && pwd.equals(“123”)){
return true;
}else {
return false;
}
}
}
presenter层

public class LoginPresenter {
public LoginPresenter(LoginPresenterInterface loginPresenterInterface) {
mLoginPresenterInterface = loginPresenterInterface;
}

public void login(String name, String pwd){
    LoginModel model = new LoginModel();
    boolean b = model.onPostExecute(name, pwd);
    if (b){
        mLoginPresenterInterface.seccess(name,pwd);
    }else {
        mLoginPresenterInterface.failed();
    }
}
public interface LoginPresenterInterface{
    void seccess(String name,String pwd);
    void failed();
}
private LoginPresenterInterface mLoginPresenterInterface;

}
Actvity层

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements View.OnClickListener, LoginPresenter.LoginPresenterInterface {

private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private CheckBox cb;
private String username;
private String password;
private LoginPresenter loginPresenter;
private SharedPreferences sp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化控件
    initView();
    //初始化记住密码
    aaa();

}

private void aaa() {
    if (sp.getBoolean("jz",false)){
        cb.setChecked(true);
        etUsername.setText(sp.getString("username",""));
        etPassword.setText(sp.getString("password",""));
    }
    cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){
                sp.edit().putBoolean("jz",true).commit();
            }else {
                sp.edit().putBoolean("jz",false).commit();
            }
        }
    });
}

private void initView() {
    etUsername = findViewById(R.id.et_username);
    etPassword = findViewById(R.id.et_password);
    cb = findViewById(R.id.cb);
    btnLogin = findViewById(R.id.btn_login);
    btnLogin.setOnClickListener(this);
    loginPresenter = new LoginPresenter(this);//这里的this和LoginPresenter中的连个方法是连接的,刚开始会报错,引入两个方法就好了,例如下面的seccess和failed主要是登录成功与失败的方法
    sp = getSharedPreferences("qianjiu",MODE_PRIVATE);
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.btn_login:
            username = etUsername.getText().toString().trim();
            password = etPassword.getText().toString();
            if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
                return;
            }else {
                loginPresenter.login(username,password);
            }
            break;
    }
}

@Override
public void seccess(String name, String pwd) {
    SharedPreferences.Editor edit = sp.edit();
    edit.putString("username",username);
    edit.putString("password",password);
    edit.commit();
    Toast.makeText(this, "恭喜"+username+"登陆成功", Toast.LENGTH_SHORT).show();
    startActivity(new Intent(this,ShowActivity.class));
}

@Override
public void failed() {
    Toast.makeText(this, "很抱歉,登录失败", Toast.LENGTH_SHORT).show();
}

}

猜你喜欢

转载自blog.csdn.net/weixin_43117800/article/details/84102931