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();
}
}