千家信息网

Android用SharedPreferences怎么实现登录注册注销功能

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这
千家信息网最后更新 2024年11月26日Android用SharedPreferences怎么实现登录注册注销功能

这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章吧。

一、本文逻辑

本文的注册登录逻辑如下:

1、注册页面:有账号可以直接去登录页面。没有账号的话填写账号密码,检测账号密码不为空,点击立即注册,保存账号信息,跳转到登录页面。

2、登录页面:首先读取缓存的账号密码和是否记住密码,将账号显示,判断记住密码的标志,为空或false,不显示密码,需要输入密码,为true则直接将缓存的密码显示,选择是否记住密码按钮,将此状态存入缓存,点击登录跳转到主页。

3、主页:首先取缓存,判断是否登录,若没有登录跳转到注册页面。点击退出登录,跳转到注册页;(2)点击注销账号,清除所有缓存,跳转到注册页面。

二、代码

1.布局界面

注册页面 activity_register.xml

                                                    

登录界面 activity_login.xml

                                                                                    

主页面

            

2.Activity 逻辑

注册页面的逻辑

package com.example.yuan;import android.content.Intent;import android.content.SharedPreferences;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 androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;/** * Created by Yuan on 2020/8/6 17:08. * 包名: com.example.yuan * 类说明:注册(按钮的点击事件直接使用 Activity 作为事件监听器) */public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {    //获取用户名,昵称,密码,确认密码    private EditText reg_uname,reg_uname2,et_pwd,et_pwd2;    //获取用户名,昵称,密码,确认密码的值    private String uname,pwd,pwd2;    private SharedPreferences sp;    private SharedPreferences.Editor editor;private Button btn_reg,btn_toLogin;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_register);        init();//获取界面控件    }    //UI组件初始化与事件绑定    private void init(){        //UI组件初始化        reg_uname=findViewById(R.id.reg_uname);        et_pwd=findViewById(R.id.reg_pwd);        et_pwd2=findViewById(R.id.reg_pwd2);        btn_toLogin=findViewById(R.id.register_toLogin_btn);        btn_reg=findViewById(R.id.register_btn);        //点击事件绑定        btn_reg.setOnClickListener(this);        btn_toLogin.setOnClickListener(this);    }//点击事件    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.register_btn:                //获取参数                uname=reg_uname.getText().toString().trim();                pwd=et_pwd.getText().toString().trim();                pwd2=et_pwd2.getText().toString().trim();                //判断                if(uname.equals("") || pwd.equals("") ){                    Toast.makeText(RegisterActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();                    return;                }else if(!(pwd.equals(pwd2))){                    Toast.makeText(RegisterActivity.this,"两次输入密码不一致",Toast.LENGTH_SHORT).show();                }else {                    //loginInfo表示文件名                    sp=getSharedPreferences("loginInfo", MODE_PRIVATE);                    //获取编辑器                    editor=sp.edit();                    //存入注册的用户信息                    editor.putString("username", uname);                    editor.putString("password",pwd);                    //提交修改                    editor.commit();                    Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_SHORT).show();                    startActivity(new Intent(getApplicationContext(),LoginActivity.class));                }                break;            case R.id.register_toLogin_btn://跳转到登录页面                startActivity(new Intent(getApplicationContext(),LoginActivity.class));                finish();                break;        }    }}

登录页面的逻辑

package com.example.yuan;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;/** * Created by Yuan on 2020/8/6 16:12. * 包名: com.example.yuan * 类说明:登录 */public class LoginActivity extends AppCompatActivity {    private EditText et_uname,et_upwd;//获取用户名,密码    private CheckBox isRemember;    private Button login_btn;    private String username,password,sp_name,sp_pwd;    private Boolean sp_isRemember;//是否记住密码的标志    private Context mContext;    private SharedPreferences sp;    private SharedPreferences.Editor editor;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        init();//获取界面控件        //读取缓存数据        sp=getSharedPreferences("loginInfo", MODE_PRIVATE);        sp_name=sp.getString("username","");        sp_pwd=sp.getString("password","");        sp_isRemember=sp.getBoolean("isRemember",false);        //如果有账号,直接显示        Log.d("TAG",sp_name);        et_uname.setText(sp_name);        //如果上次登录记住了密码,本次登录直接设置上        if(sp_isRemember.equals(true)){            et_upwd.setText(sp_pwd);            isRemember.setChecked(true);        }        mContext= LoginActivity.this;        //登录按钮的点击事件(直接用匿名内部类)        login_btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //开始登录,获取输入的用户名和密码               username = et_uname.getText().toString().trim();               password = et_upwd.getText().toString().trim();                // TextUtils.isEmpty判断是否输入                if (TextUtils.isEmpty(username)) {                    Toast.makeText(mContext, "请输入手机号", Toast.LENGTH_SHORT).show();                } else if (TextUtils.isEmpty(password)) {                    Toast.makeText(mContext, "请输入密码", Toast.LENGTH_SHORT).show();                    // 判断,输入的账号密码,是否与保存在SharedPreferences中一致                } else if (username.equals(sp_name) && password.equals(sp_pwd)) {                    //一致登录成功                    Toast.makeText(mContext, "登录成功", Toast.LENGTH_SHORT).show();                    //判断记住密码按钮是否选中,选中则将isRemember设置为true,保存状态                    sp=getSharedPreferences("loginInfo", MODE_PRIVATE);                    //获取编辑器                    editor=sp.edit();                    if (isRemember.isChecked()) {//如果记住密码选中,存入true,否则存入false                        editor.putBoolean("isRemember",true);                    }else {                        editor.putBoolean("isRemember",false);                    }                    editor.putBoolean("isLogin",true);//保存登录状态                    editor.apply();//提交修改                    //登录成功后关闭此页面进入主页                    //跳转到主界面,登录成功的状态传递到 MainActivity 中                    Intent intent=new Intent(getApplicationContext(),MainActivity.class);                    intent.putExtra("name",username);                    startActivity(intent);                    finish();//销毁登录界面                } else if ((sp_pwd != null && !TextUtils.isEmpty(sp_pwd) && !password.equals(sp_pwd))) {                    Toast.makeText(mContext, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(mContext, "此用户名不存在", Toast.LENGTH_SHORT).show();                }            }        });    }    //获取界面控件    private void init(){        et_uname=findViewById(R.id.login_username);        et_upwd=findViewById(R.id.login_password);        isRemember=findViewById(R.id.login_remember);        login_btn=findViewById(R.id.login_btn);    }//注册按钮的点击事件(直接绑定在控件上)    public void register(View view) {        Intent intent=new Intent(getApplicationContext(),RegisterActivity.class);        startActivity(intent);    }}

主页面的逻辑

package com.example.yuan;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private  SharedPreferences sp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView textView=findViewById(R.id.text);        Intent intent=getIntent();        String name=intent.getStringExtra("name");        sp=getSharedPreferences("loginInfo", MODE_PRIVATE);        textView.setText("欢迎你,"+name);        Boolean isLogin=sp.getBoolean("isLogin",false);        if (!isLogin){            startActivity(new Intent(getApplicationContext(),RegisterActivity.class));            finish();        }else if(TextUtils.isEmpty(name)){            startActivity(new Intent(getApplicationContext(),LoginActivity.class));            finish();        }    }    public void Quit(View view) {        sp=getSharedPreferences("loginInfo", MODE_PRIVATE);        SharedPreferences.Editor editor=sp.edit();        editor.putBoolean("isLogin",false);        editor.commit();        startActivity(new Intent(getApplicationContext(),RegisterActivity.class));        finish();    }    /**     * @param view     */    public void zhuxiao(View view) {        sp=getSharedPreferences("loginInfo", MODE_PRIVATE);        SharedPreferences.Editor editor=sp.edit();        editor.clear();        editor.commit();        Toast.makeText(MainActivity.this,"注销成功",Toast.LENGTH_SHORT).show();        startActivity(new Intent(getApplicationContext(),RegisterActivity.class));        finish();    }}

以上就是关于"Android用SharedPreferences怎么实现登录注册注销功能"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0