mvp登录.注册

一.导依赖

 implementation 'com.squareup.okhttp3:okhttp:3.2.0'
    implementation 'com.squareup.okio:okio:1.7.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'

二.封装OKhttp

package com.example.login.util;

import android.os.Handler;
import android.os.Message;
import android.util.Log;

import com.google.gson.JsonIOException;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpUtil {

    static String info = "";

    private static OkHttpUtil okHttpUtil = null;

    private OkHttpUtil(){

    };

    //封装单例
    private static OkHttpUtil getInstance(){

        if(okHttpUtil==null){

            okHttpUtil = new OkHttpUtil();

        }else{
            return okHttpUtil;
        }

        return okHttpUtil;
    }

    //请求doPost方法
    public static void doPost(final Handler handler, int tag, String phone, String pwd){

        String url = "";
        if(tag == 0){
            url = "http://172.17.8.100/small/user/v1/login";
        }else{
            url = "http://172.17.8.100/small/user/v1/register";
        }

        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("phone",phone)
                .add("pwd",pwd)
                .build();
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
        client.newCall(request).enqueue(new Callback() {



            @Override
            public void onFailure(Call call, IOException e) {
                    info = "请求失败";
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                String string = response.body().string();

                try {

                    JSONObject jsonObject = new JSONObject(string);
                    info = jsonObject.getString("message");
                    Log.e("tag",info);
                    Message message = new Message();
                    message.obj=info;
                    handler.sendMessage(message);

                }catch (JSONException e){
                    e.printStackTrace();
                }

            }
        });

    }


}

三.创建model层

///model层的接口

package com.example.login.model;

import com.example.login.interfaces.CallBack;


public interface IModel {

    void getCa(CallBack callBack, int tag, String phone, String pwd);



}


///model层的实现类

package com.example.login.model;

import android.os.Handler;
import android.os.Message;

import com.example.login.interfaces.CallBack;
import com.example.login.util.OkHttpUtil;

import javax.security.auth.callback.Callback;

import okhttp3.OkHttpClient;


public class MainModel implements IModel {

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String s = (String) msg.obj;
            if(s.contains("成功")){
                callBack.Success(s);
            }else{
                callBack.Error(s);
            }
        }
    };
    private CallBack callBack;

    @Override
    public void getCa(CallBack callBack, int tag, String phone, String pwd) {
        this.callBack = callBack;
        OkHttpUtil.doPost(handler,tag,phone,pwd);


    }
}


四.实现presenter层

///presenter的接口

package com.example.login.presenter;

public interface IPresenter {

    void getLogin(int tag,String phone,String pwd);


}


///presenter的实现类

package com.example.login.presenter;

import com.example.login.interfaces.CallBack;
import com.example.login.model.MainModel;
import com.example.login.view.IView;

public class MainPresenter implements IPresenter {


    private MainModel mainModel;
    private IView iView;

    public MainPresenter(IView iView){
        
        mainModel = new MainModel();
        this.iView = iView;
    }
    

    @Override
    public void getLogin(final int tag, String phone, String pwd) {

        mainModel.getCa(new CallBack() {
            @Override
            public void Success(String result) {
                iView.getShow(result,tag);
            }

            @Override
            public void Error(String msg) {
                iView.getShow(msg,tag);
            }
        },tag,phone,pwd);
        
        
    }

    public void onDestory(){
        if(mainModel!=null){
            mainModel = null;
        }else if(iView != null){
            iView = null;
        }
    }


}

五.view层的实现

package com.example.login.view;

public interface IView {

    void getShow(String info,int tag);

}

六.创建一个接口

package com.example.login.interfaces;

public interface CallBack {

    public void Success(String result);
    public void  Error(String msg);


}

七.登录页面MainActivity

package com.example.login.view;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.example.login.R;
import com.example.login.presenter.MainPresenter;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;

import java.util.Map;

public class MainActivity extends AppCompatActivity implements IView,View.OnClickListener{

    private EditText ed1;
    private EditText ed2;
    private Button login;
    private Button kuai;
    private MainPresenter presenter;
    private SharedPreferences sp;
    private CheckBox radioButton;
    private Button qq;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {

        ed1 = findViewById(R.id.ed1);
        ed2 = findViewById(R.id.ed2);

        login = findViewById(R.id.login);
        kuai = findViewById(R.id.kuai);
        qq = findViewById(R.id.qq);
               
        radioButton = findViewById(R.id.radioButton);
        login.setOnClickListener(this);
        kuai.setOnClickListener(this);

        presenter = new MainPresenter(this);


        sp = getSharedPreferences("login", Context.MODE_PRIVATE);
        if (sp.getBoolean("remober", false)) {
            String phone = sp.getString("phone", "");
            String pwd = sp.getString("pwd", "");

            ed1.setText(phone);
            ed2.setText(pwd);
            radioButton.setChecked(false);

        }

       

    



    @Override
    public void onClick(View v) {

        switch (v.getId()){
            case R.id.login:
                String phone1 = ed1.getText().toString();
                String pwd1 = ed2.getText().toString();

                presenter.getLogin(0,phone1,pwd1);

                SharedPreferences.Editor edit = sp.edit();
                edit.putBoolean("remober",radioButton.isChecked());
                edit.putString("phone",phone1);
                edit.putString("pwd",pwd1);
                edit.commit();

                break;


            case R.id.kuai:

                startActivity(new Intent(MainActivity.this,RegisterActivity.class));

                break;
        }


    }


    @Override

    public void getShow(String info, int tag) {

        if(info.equals("登录成功")){
            Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
            startActivity(new Intent(MainActivity.this,HomeActivity.class));
        }else{
            Toast.makeText(MainActivity.this,info,Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDestory();
    }
}

八.注册Activity

package com.example.login.view;

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.login.R;
import com.example.login.presenter.MainPresenter;

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener,IView {

    private Button register;
    private EditText ed3;
    private EditText ed4;
    private EditText ed5;
    private MainPresenter presenter;
    private Button yi;
    private SmsReceiver mSmsReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);


        ed3 = findViewById(R.id.ed3);
        ed4 = findViewById(R.id.ed4);
        ed5 = findViewById(R.id.ed5);
        register = findViewById(R.id.register);
        yi = findViewById(R.id.yi);
        register.setOnClickListener(this);
        yi.setOnClickListener(this);

        presenter = new MainPresenter(this);





    }

    @Override
    public void onClick(View v) {

        switch (v.getId()){
            case R.id.register:
                String phone3 = ed3.getText().toString();
                String pwd3 = ed4.getText().toString();
                presenter.getLogin(1,phone3,pwd3);
                break;

            case R.id.yi:
                startActivity(new Intent(RegisterActivity.this,MainActivity.class));
                break;
        }





    }

    @Override
    public void getShow(String info, int tag) {

        if(info.equals("注册成功")){
            Toast.makeText(RegisterActivity.this,info,Toast.LENGTH_SHORT).show();
            startActivity(new Intent(RegisterActivity.this,MainActivity.class));
        }else{
            Toast.makeText(RegisterActivity.this,info,Toast.LENGTH_SHORT).show();

        }


    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDestory();
        this.unregisterReceiver(mSmsReceiver);
    }
}

布局文件需自写!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值