Android使用MVP實現登入註冊
阿新 • • 發佈:2018-12-20
一.定義一個類(以下用到的介面)
public class API {
public static final String LOGIN_URL = "http://www.zhaoapi.cn/user/login";//登入介面
public static final String REG_URL = "http://www.zhaoapi.cn/user/reg";//註冊介面
}
二.寫一個介面
public interface LoginCallBack { void onLoginSuccess(String result); void onLoginFailer(String msg); }
三.view層
public interface ILoginView {
//登入成功
void onSuccess(String result);
//登入失敗
void onFailer(String error);
}
四.Model層(處理資料)
public class LoginModel { //這裡的User類,裡面包含的是姓名和密碼 public void login(final User user, final LoginCallBack loginCallBack) { HttpUtils httpUtils = new HttpUtils(); httpUtils.getpath(API.LOGIN_URL + "?mobile=" + user.getName() + "&&password=" + user.getPass()); httpUtils.getHelpListener(new HttpUtils.GetData() { @Override public void setString(String s) { Gson gson = new Gson(); UserBean userBean = gson.fromJson(s, UserBean.class); if (userBean.getCode().equals("0")) { loginCallBack.onLoginSuccess("登陸成功"); } else { loginCallBack.onLoginFailer("登入失敗"); } } }); } }
五.Presenter層
public class LoginPresenter { private ILoginView iLoginView; private LoginModel loginModel; public LoginPresenter(ILoginView iLoginView) { this.iLoginView = iLoginView; loginModel = new LoginModel(); } public void login(User user) { loginModel.login(user, new LoginCallBack() { @Override public void onLoginSuccess(String result) { iLoginView.onSuccess("登陸成功"); } @Override public void onLoginFailer(String msg) { iLoginView.onFailer("登入失敗"); } }); } }
六.Activity層
public class TwoActivity extends AppCompatActivity implements ILoginView {
private LoginPresenter loginPresenter;
private EditText name;
private EditText pwd;
private Button login_bt;
private TextView register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//初始化控制元件
name = (EditText) findViewById(R.id.name);
pwd = (EditText) findViewById(R.id.pwd);
login_bt = (Button) findViewById(R.id.login_bt);
loginPresenter = new LoginPresenter(this);
register = (TextView) findViewById(R.id.register);
//點選登入
login_bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name1 = name.getText().toString().trim();
String pwd1 = pwd.getText().toString().trim();
//判空
if (TextUtils.isEmpty(name1) && TextUtils.isEmpty(pwd1)) {
Toast.makeText(TwoActivity.this, "使用者名稱或密碼不能為空", Toast.LENGTH_SHORT).show();
} else {
loginPresenter.login(new User(name1, pwd1));
}
}
});
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(TwoActivity.this, RegisterActivity.class));
}
});
}
@Override
public void onSuccess(String result) {
SharedPreferences sharedPreferences = getSharedPreferences("login", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putInt("login", 0);
edit.commit();
Intent intent = new Intent(this, ShowActivity.class);
startActivity(intent);
finish();
Toast.makeText(this, "登入成功", Toast.LENGTH_SHORT).show();
//startActivity(new Intent(TwoActivity.this, ShowActivity.class));
}
@Override
public void onFailer(String error) {
Toast.makeText(this, "登入失敗", Toast.LENGTH_SHORT).show();
}
}
七.註冊跟登入程式碼一致