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




//封装的OkHttp工具类
[java] view plain copy
<span style="font-size:18px;">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);  
            }  
        }  
    }  
}</span>  
//登录布局
[java] view plain copy
<span style="font-size:18px;"><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></span>  
//登录代码
[java] view plain copy
<span style="font-size:18px;">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();  
        }  
    }  
  
}</span>  
//注册页面代码
[java] view plain copy
<span style="font-size:18px;">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();  
        }  
  
    }  
}</span>  
//个人页面代码
[java] view plain copy
<span style="font-size:18px;">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();  
        }  
  
    }  
}</span>  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值