实现原生登录注册和个人中心模块

//封装的OkHttp工具类

public class NetUtil {
    Tojson tojson;
    MyHandler myhandler=new MyHandler();
    public void getOkhttp(String surl){
        //创建对象
        OkHttpClient client=new OkHttpClient();
        //创建请求
        Request request=new Request.Builder().url(surl).build();
        //创建队列
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //失败
                Message msg=new Message();
                msg.what=0;
                msg.obj="失败";
                myhandler.sendMessage(msg);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //成功
                String json = response.body().string();
                Message msg=new Message();
                msg.what=1;
                msg.obj=json;
                myhandler.sendMessage(msg);
            }
        });

    }

    //写一个接口用于外部访问
    public interface Tojson{
        void error(String error);
        void success(String json);
    }
    //提供方法给外部访问
    public void getjson(Tojson tojson){
        this.tojson=tojson;
    }

    class MyHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int w = msg.what;
            if(w==0){
                String error= (String) msg.obj;
                tojson.error(error);
            }
            if(w==1){
                String json= (String) msg.obj;
                tojson.success(json);
            }
        }
    }
}
//登录布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.bwie.biaodanyanzheng.MainActivity">

    <TextView
        android:textSize="30sp"
        android:padding="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_gravity="center"/>

    <View
        android:background="#999999"
        android:layout_width="match_parent"
        android:layout_height="0.75dp"/>

     <EditText
         android:id="@+id/tel"
         android:hint="请输入手机号"
         android:layout_marginTop="20dp"
         android:layout_gravity="center"
         android:ems="15"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/pwd"
        android:hint="请输入密码"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:ems="15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:onClick="dl"
              android:textSize="20sp"
              android:text="登录"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
        <Button
            android:onClick="zc"
            android:layout_marginLeft="20px"
            android:textSize="20sp"
            android:text="注册"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>
//登录代码

public class MainActivity extends AppCompatActivity implements NetUtil.Tojson{
    String url="http://120.27.23.105/user/login";
    private EditText tel;
    private EditText pwd;
    private SharedPreferences zidong;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        initViews();
    }

    private void initViews() {
        tel = findViewById(R.id.tel);
        pwd = findViewById(R.id.pwd);
        //创建记录的xml文件
        zidong = getSharedPreferences("zidong", MODE_PRIVATE);
        //设置自动登录的装状态
        boolean jizhu = zidong.getBoolean("jizhu", false);
        if(jizhu){//如果为真就证明登录过,跳转
            //获取值
            String t = zidong.getString("tel",null);
            String p = zidong.getString("pwd",null);
            int uid = zidong.getInt("uid", -1);
            //赋值
            tel.setText(t);
            pwd.setText(p);
            //跳转到个人页面
            Intent intent=new Intent(MainActivity.this,Main3Activity.class);
            intent.putExtra("uid",uid);
            startActivity(intent);
        }
    }

    public void dl(View v){
        //获取输入框的值
        String t = tel.getText().toString().trim();
        String p = pwd.getText().toString().trim();
        //请求网络
        NetUtil netUtil=new NetUtil();
        netUtil.getOkhttp(url+"?mobile="+t+"&password="+p);
        netUtil.getjson(this);
    }
    public void zc(View v){
        Intent intent=new Intent(MainActivity.this,Main2Activity.class);
        startActivityForResult(intent,1);
    }

    //回跳的方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
              //展示到界面
              tel.setText(data.getStringExtra("tel"));
              pwd.setText(data.getStringExtra("pwd"));
    }

    @Override
    public void error(String error) {

    }

    @Override
    public void success(String json) {
        try {
            //使用原生josn   因为返回的类不一样,所以要使用原生的json
            JSONObject jsonObject=new JSONObject(json);
            String code = jsonObject.getString("code");
            if(code.equals("0")){
                Gson gson=new Gson();
                zhece zhece = gson.fromJson(json, zhece.class);
                //如果登录成功,保存值,并改变记录状态
                SharedPreferences.Editor edit = zidong.edit();
                edit.putBoolean("jizhu",true);
                edit.putString("tel",zhece.getData().getMobile());
                edit.putString("pwd",zhece.getData().getMobile());
                edit.putInt("uid",zhece.getData().getUid());
                edit.commit();

                //跳转到个人页面
                Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                intent.putExtra("uid",zhece.getData().getUid());
                startActivity(intent);
            }else {
                Toast.makeText(MainActivity.this,jsonObject.getString("msg") + "请注册",Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
//注册页面代码
public class Main2Activity extends AppCompatActivity implements NetUtil.Tojson{
    String url="http://120.27.23.105/user/reg";
    private EditText ztel;
    private EditText zpwd;
    private String pwd;
    private String tel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //初始化数据
        initViews();
    }

    private void initViews() {
        ztel = findViewById(R.id.ztel);
        zpwd = findViewById(R.id.zpwd);
    }

    public void ljzc(View v){
          //获取网络数据
          NetUtil netUtil=new NetUtil();
          //获取输入框数据
        pwd = zpwd.getText().toString().trim();
        tel = ztel.getText().toString().trim();
        //获取数据
        netUtil.getOkhttp(url+"?mobile="+ tel +"&password="+ pwd);
        //接口回调
        netUtil.getjson(this);
    }

    @Override
    public void error(String error) {

    }

    @Override
    public void success(String json) {
          //获取数据
        Gson g=new Gson();
        zhece zhece = g.fromJson(json, zhece.class);
        String code = zhece.getCode();
        if(code.equals("1")){
            Toast.makeText(Main2Activity.this,zhece.getMsg(),Toast.LENGTH_LONG).show();
        }
        //注册成功,回跳登录页面
        if(code.equals("0")){
            Intent intent = new Intent();
            intent.putExtra("tel",tel);
            intent.putExtra("pwd",pwd);
            setResult(0,intent);
            finish();
        }

    }
}
//个人页面代码
public class Main3Activity extends AppCompatActivity implements NetUtil.Tojson{
    String url="http://120.27.23.105/user/getUserInfo";
    private TextView name;
    private TextView pass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        Intent intent = getIntent();
        //获取数据
        int uid = intent.getIntExtra("uid",-1);
        //获取控件
        name = findViewById(R.id.name);
        pass = findViewById(R.id.pass);
        //请求数据
        NetUtil netUtil=new NetUtil();
        netUtil.getOkhttp(url+"?uid="+uid);
        netUtil.getjson(this);
    }
    public void tui(View v){
          //点击推出按钮,清空数据回到登录页面
        SharedPreferences zidong = getSharedPreferences("zidong", MODE_PRIVATE);
        zidong.edit().clear().commit();
        //跳转到登录页面
        Intent intent=new Intent(Main3Activity.this,MainActivity.class);
        startActivity(intent);
    }

    @Override
    public void error(String error) {

    }

    @Override
    public void success(String json) {
        //获取数据
        JSONObject jsonObject= null;
        try {
            jsonObject = new JSONObject(json);
            String code = jsonObject.getString("code");
            if(code.equals("0")){
                Gson g=new Gson();
                zhece zhece = g.fromJson(json, zhece.class);
                //给赋值
                name.setText(zhece.getData().getUid()+"");
                pass.setText(zhece.getData().getUsername());
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值