1. 程式人生 > >介面回撥登入註冊

介面回撥登入註冊

實現下圖效果,點選註冊,跳轉到註冊頁面,註冊成功跳轉回登入頁面

登入成功,跳轉到個人中心

圖一的程式碼

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