另一种MVP的登录注册,底部导航

IModel

public interface IModel {

     void Login(String url,String phone,String pwd,LoginCallBack loginCallBack);
     interface LoginCallBack{
         void Success(String data);
     }

    void Regist(String url,String phone,String pwd,RegistCallBack registCallBack);
    interface RegistCallBack{
        void Success(String data);
    }



}

Model

public class Model implements IModel {
    @Override
    public void Login(String url, String phone, String pwd, final LoginCallBack loginCallBack) {
        OkHttpUtils.okHttpPost(url, phone, pwd, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                loginCallBack.Success(response.body().string());
            }
        });
    }

    @Override
    public void Regist(String url, String phone, String pwd, final RegistCallBack registCallBack) {
        OkHttpUtils.okHttpPost(url, phone, pwd, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                registCallBack.Success(response.body().string());
            }
        });
    }
}

IPresenter

public interface IPresenter {
     void getLoginPre(String name,String pwd);
     void getRegistPre(String name,String pwd);
}

Presenter

public class Presenter implements IPresenter {

    public static String url ="http://172.17.8.100/small/user/v1/login";
    public static String urls ="http://172.17.8.100/small/user/v1/register";
    private final Model model;
    private IView iView1;
    private View view1;

    public Presenter(IView iView) {
        iView1 = iView;
        model = new Model();
    }

    public Presenter(View view) {
        view1 = view;
        model = new Model();
    }


    @Override
    public void getLoginPre(String name, String pwd) {
        model.Login(url, name, pwd, new IModel.LoginCallBack() {
            @Override
            public void Success(String data) {
                iView1.getLoginView(data);
            }
        });
    }

    @Override
    public void getRegistPre(String name, String pwd) {
        model.Regist(urls, name, pwd, new IModel.RegistCallBack() {
            @Override
            public void Success(String data) {
                view1.getRegistView(data);
            }
        });
    }
}

OkHttpUtils网络请求

public class OkHttpUtils {
    private static OkHttpClient okHttpClient;
    private static Request request;
    private static OkHttpClient client;
    private static RequestBody build;
    private static Request requestBuild;
    private static OkHttpUtils instance;

//    private Interceptor getInterceptor(){
//        Interceptor interceptor = new Interceptor(){
//            @Override
//            public Response intercept(Chain chain) throws IOException {
//                Request request = chain.request();
//                Log.e("+++++","拦截前");
//                Response proceed = chain.proceed(request);
//                Log.e("+++++","拦截后");
//                return proceed;
//            }
//        };
//        return interceptor;
//    }
//    public static OkHttp getInstance(){
//        if (instance==null){
//            synchronized (OkHttp.class){
//                if (null==instance){
//                    instance = new OkHttp();
//                }
//
//            }
//        }
//        return instance;
//    }

    public static void okHttpGet(String url, final Callback callback){
        okHttpClient = new OkHttpClient();
        request = new Request.Builder().url(url).method("GET", null).build();
        okHttpClient.newCall(request).enqueue(callback);

    }
    public static void okHttpPost(String url,String name,String pwd,Callback callback){
        okHttpClient = new OkHttpClient();
        build = new FormBody.Builder().add("phone", name).add("pwd", pwd).build();
        requestBuild = new Request.Builder().url(url).post(OkHttpUtils.build).build();
        okHttpClient.newCall(requestBuild).enqueue(callback);
    }
}

MainActivity页面,登录

package wangyaowei.bw.com.login;

import android.content.Intent;
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.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import wangyaowei.bw.com.login.bean.LoginBean;
import wangyaowei.bw.com.login.presenter.Presenter;
import wangyaowei.bw.com.login.view.IView;

public class MainActivity extends AppCompatActivity implements IView {

    private EditText phone;
    private EditText pwd;
    private Button login;
    private Presenter presenter;
    private Button regist;

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

        phone = findViewById(R.id.phone);
        pwd = findViewById(R.id.pwd);
        login = findViewById(R.id.login);
        regist = findViewById(R.id.regist);

        //跳到注册页面
        regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,RegistActivity.class);
                startActivity(intent);
            }
        });

        presenter = new Presenter(this);

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String phones = phone.getText().toString();
                String pwds = pwd.getText().toString();
                if (TextUtils.isEmpty(phones)||TextUtils.isEmpty(pwds)){
                    Toast.makeText(MainActivity.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
                }else {
                    presenter.getLoginPre(phones,pwds);
                }
            }
        });


    }

    @Override
    public void getLoginView(final String data) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                LoginBean loginBean = gson.fromJson(data, LoginBean.class);
                String status = loginBean.getStatus();
                if (status.equals("0000")){
                    Intent intent = new Intent(MainActivity.this,ShowActivity.class);
                    startActivity(intent);
                    finish();
                }else {
                    Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

RegistActivity页面

package wangyaowei.bw.com.login;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import wangyaowei.bw.com.login.bean.RegistBean;
import wangyaowei.bw.com.login.presenter.Presenter;
import wangyaowei.bw.com.login.view.View;

public class RegistActivity extends AppCompatActivity implements View {

    private EditText reg_phone;
    private EditText reg_pwd;
    private Button reg_regist;
    private Presenter presenter;

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

        reg_phone = findViewById(R.id.reg_phone);
        reg_pwd = findViewById(R.id.reg_pwd);
        reg_regist = findViewById(R.id.reg_regist);

        presenter = new Presenter(this);

        reg_regist.setOnClickListener(new android.view.View.OnClickListener() {
            @Override
            public void onClick(android.view.View v) {
                String phone = reg_phone.getText().toString();
                String pwd = reg_pwd.getText().toString();
                if (TextUtils.isEmpty(phone)||TextUtils.isEmpty(pwd)){
                    Toast.makeText(RegistActivity.this, "输入内容不能为空", Toast.LENGTH_SHORT).show();
                }else{
                    presenter.getRegistPre(phone,pwd);
                }
            }
        });


    }

    @Override
    public void getRegistView(final String data) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                RegistBean regisBean = gson.fromJson(data, RegistBean.class);
                String status = regisBean.getStatus();
                Log.i("aaaaaaa", "run: "+status);
                if (status.equals("0000")){
                    Toast.makeText(RegistActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(RegistActivity.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }else{
                    Toast.makeText(RegistActivity.this, "注册格式不对或已注册"+status, Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

ShowActivity页面,底部导航

package wangyaowei.bw.com.login;

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;

import wangyaowei.bw.com.login.fragment.One;
import wangyaowei.bw.com.login.fragment.Three;
import wangyaowei.bw.com.login.fragment.Two;

public class ShowActivity extends AppCompatActivity implements View.OnClickListener {

    private One one;
    private Two two;
    private Three three;
    private RadioGroup group;
    private FragmentManager manager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();

       Button button1 = findViewById(R.id.button1);
        Button button2 = findViewById(R.id.button2);
        Button button3 = findViewById(R.id.button3);
        group = findViewById(R.id.group);

        one = new One();
        two = new Two();
        three = new Three();

        transaction.add(R.id.frame, one);
        transaction.add(R.id.frame, two);
        transaction.add(R.id.frame, three);
        transaction.show(one).hide(two).hide(three);
        transaction.commit();

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        FragmentTransaction fragmentTransaction = manager.beginTransaction();
        switch (v.getId()){
            case R.id.button1:
                fragmentTransaction.show(one).hide(two).hide(three).commit();
                break;
            case R.id.button2:
                fragmentTransaction.show(two).hide(one).hide(three).commit();
                break;
            case R.id.button3:
                fragmentTransaction.show(three).hide(two).hide(one).commit();
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44405056/article/details/88782312
今日推荐