介面回撥登入註冊
阿新 • • 發佈:2018-12-20
實現下圖效果,點選註冊,跳轉到註冊頁面,註冊成功跳轉回登入頁面
登入成功,跳轉到個人中心
圖一的程式碼
package com.example.xxx.day10_login_zhuce; public class MainActivity extends AppCompatActivity implements View.OnClickListener,LoginPresenter.MyListener { private Toolbar tb_login; private EditText ed_tel; private EditText ed_pass; private Button but_login; private Button but_zhuce; private String tel; private String pass; private LoginPresenter loginPresenter; SharedPreferences mSharedPreferences; SharedPreferences.Editor mEditor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控制元件 initView(); loginPresenter = new LoginPresenter(this); mSharedPreferences=getSharedPreferences("xxx",MODE_PRIVATE); loginPresenter.isFirst(mSharedPreferences); } /* 初始化控制元件 */ private void initView() { tb_login = findViewById(R.id.tb_login); ed_tel = (EditText) findViewById(R.id.ed_tel); ed_pass = (EditText) findViewById(R.id.ed_pass); but_login = (Button) findViewById(R.id.but_login); but_zhuce = (Button) findViewById(R.id.but_zhuce); but_login.setOnClickListener(this); but_zhuce.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { /* 點選登入 */ case R.id.but_login: tel = ed_tel.getText().toString().trim(); pass = ed_pass.getText().toString().trim(); new AsyncTask<String, String, LoginSuccess>(){ @Override protected LoginSuccess doInBackground(String... strings) { LoginModel loginModel=new LoginModel(); //獲得資料 String textString=loginModel.login(strings[0]); LoginSuccess login=new Gson().fromJson(textString,LoginSuccess.class); return login; } @Override protected void onPostExecute(LoginSuccess loginSuccess) { super.onPostExecute(loginSuccess); loginPresenter.checkLogin(loginSuccess); } }.execute( "http://120.27.23.105/user/login?mobile="+tel+"&password="+pass); break; /* 點選註冊 */ case R.id.but_zhuce: //跳轉到註冊頁面 startActivity(new Intent(MainActivity.this,ZhuceActivity.class)); break; } } //介面回撥,重寫方法(登入成功) @Override public void success(String msg,LoginSuccess loginSuccess) { //往sp裡面存資料 mEditor=mSharedPreferences.edit(); mEditor.putBoolean("first",true); mEditor.putString("icon",(String) loginSuccess.getData().getIcon()); mEditor.putString("name",loginSuccess.getData().getUsername()); mEditor.putString("nicheng",(String) loginSuccess.getData().getNickname()); mEditor.commit(); Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show(); Intent intent= new Intent(MainActivity.this,MeActivity.class); startActivity(intent); finish(); } @Override public void error(String msg) { Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show(); } @Override public void notFirst() { Intent intent= new Intent(MainActivity.this,MeActivity.class); startActivity(intent); finish(); } }
註冊頁面
public class ZhuceActivity extends AppCompatActivity implements View.OnClickListener,ZhucePresenter.MyListener { private Toolbar tb_zhuce; private EditText ed_tel; private EditText ed_pass; private Button but_zhuce; private final int ISNULL=0; private final int SUCCESS=1; private ZhucePresenter mZhucePresenter; private String tel; private String pass; private ZhuceModel zhuceModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhuce); //初始化控制元件 initView(); mZhucePresenter=new ZhucePresenter(this); } /* 初始化控制元件 */ private void initView() { tb_zhuce = (Toolbar) findViewById(R.id.tb_zhuce); ed_tel = (EditText) findViewById(R.id.ed_tel); ed_pass = (EditText) findViewById(R.id.ed_pass); but_zhuce = (Button) findViewById(R.id.but_zhuce); //設定toolbar tb_zhuce.setNavigationIcon(R.drawable.back); tb_zhuce.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //點選 but_zhuce.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.but_zhuce: zhuceModel = new ZhuceModel(); tel = ed_tel.getText().toString().trim(); pass = ed_pass.getText().toString().trim(); String path="http://120.27.23.105/user/reg?mobile="+tel+"&password="+pass; new AsyncTask<String, Void, Zhuce>(){ @Override protected Zhuce doInBackground(String... strings) { String textString=zhuceModel.zhuce(strings[0]); Zhuce zhuce=new Gson().fromJson(textString,Zhuce.class); return zhuce; } @Override protected void onPostExecute(Zhuce zhuce) { super.onPostExecute(zhuce); //在presenter判斷是否註冊成功 mZhucePresenter.checkZhuce(zhuce); } }.execute(path); break; } } @Override public void success(String msg) { Toast.makeText(ZhuceActivity.this,msg,Toast.LENGTH_SHORT).show(); //跳轉 startActivity(new Intent(this,MainActivity.class)); finish(); } @Override public void error(String msg) { Toast.makeText(ZhuceActivity.this,msg,Toast.LENGTH_SHORT).show(); } }
註冊的Presenter,判斷註冊是否成功
public class ZhucePresenter { /* 判斷是否註冊成功 */ public void checkZhuce(Zhuce zhuce) { if(zhuce.getCode().equals("0")){ //介面回撥(註冊成功) mMyListener.success(zhuce.getMsg()); } else {//介面回撥(註冊失敗) mMyListener.error(zhuce.getMsg()); } } public ZhucePresenter.MyListener mMyListener; public interface MyListener{ void success(String msg); void error(String msg); } public ZhucePresenter(ZhucePresenter.MyListener myListener) { mMyListener = myListener; } }
註冊成功後回到登入頁面MainActivity
在登入的Presenter進行判斷登入是否成功,並且判斷是否是第一次登入
public class LoginPresenter {
/*
判斷登入是否成功
*/
public void checkLogin(LoginSuccess loginSuccess){
if (loginSuccess.getCode().equals("0")){
mMyListener.success(loginSuccess.getMsg(),loginSuccess);
} else {
mMyListener.error(loginSuccess.getMsg());
}
}
public MyListener mMyListener;
/*
判斷是否第一次登入
*/
public void isFirst(SharedPreferences sharedPreferences) {
boolean first=sharedPreferences.getBoolean("first",false);
if(first==true){
mMyListener.notFirst();
}
}
public interface MyListener{
void success(String msg,LoginSuccess loginSuccess);
void error(String msg);
void notFirst();
}
public LoginPresenter(MyListener myListener) {
mMyListener = myListener;
}
}
登入成功後帶著手機號跳轉到個人中心頁面,設定sp裡面儲存的控制元件值
public class MeActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView icon;
private TextView name;
private TextView nicheng;
private Button back;
private Button clear;
SharedPreferences mSharedPreferences;
SharedPreferences.Editor mEditor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me);
initView();
mSharedPreferences=getSharedPreferences("xxx",MODE_PRIVATE);
String savenineng=mSharedPreferences.getString("nicheng","");
String saveicon=mSharedPreferences.getString("icon","");
String savename=mSharedPreferences.getString("name","");
ImageLoader.getInstance().displayImage(saveicon, icon);
name.setText(savename);
nicheng.setText(savenineng);
}
/*
初始化控制元件
*/
private void initView() {
icon = (ImageView) findViewById(R.id.icon);
name = (TextView) findViewById(R.id.name);
nicheng = (TextView) findViewById(R.id.nicheng);
back = (Button) findViewById(R.id.back);
back.setOnClickListener(this);
clear = (Button) findViewById(R.id.clear);
clear.setOnClickListener(this);
}
/*
在登入頁面點選退出
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.back:
finish();
break;
case R.id.clear:
mEditor=mSharedPreferences.edit();
mEditor.clear();
mEditor.commit();
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
finish();
break;
}
}
}