Android用SharedPreferences怎么实现登录注册注销功能
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这
千家信息网最后更新 2026年11月02日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怎么实现登录注册注销功能"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
登录
密码
账号
页面
用户
输入
事件
用户名
界面
成功
缓存
逻辑
主页
内容
按钮
一致
控件
状态
功能
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
为想互联网科技怎么样
互联网科技巨头监管
中国互联网科技股
上海挚品互联网科技
互联网 科技创业
迪茉互联网科技
贷财互联网科技
互联网金融科技创新
百单互联网科技有限公司
互联网女皇 腾讯科技
多迪互联网科技有限公司
四个字互联网科技公司取名
新华互联网科技2019
哈尔滨新华互联网科技学院
广州慧亚互联网科技怎么样
广州恒生互联网科技有限
雨阳互联网卡科技有限公司
中国新注册互联网科技
互联网时代高科技布局
深圳齐家互联网科技
时间互联网络科技
互联网教育科技公司vipkid
科技互联网大厂
阿大互联网科技有限公司
西安小鹰速贷互联网科技有限公司
长沙茂晟互联网科技有限公司
广州富喜互联网络科技
新氧科技和美国互联网有关系吗
陕西九四连强互联网科技有限公司