文章目录
- 一、SharedPreferences简单存储
- 1.需求描述
- 2.需求分析
- 2.1.保存登录用户名、密码
- 2.2.保存登录状态
- 二、登录案例任务分解
- 1.需要保存哪些数据
- 2.什么时候保存数据
- 3.什么时候读取数据
- 三、主页MainActivity代码实现
- 1.定义全局变量
- 2.onCreate()方法
- 3.onLogin()方法
- 四、个人信息InfoActivity代码实现
- 1.定义全局变量
- 2.onCreate()方法
- 3.onLogout()方法
- 总结
一、SharedPreferences简单存储
这里我们通过登录案例来讲解SharedPreferences简单存储的使用。
1.需求描述
2.需求分析
2.1.保存登录用户名、密码
第一次输入用户名密码之后,再次打开登录界面,界面上自动填充上次输入的用户名和密码
2.2.保存登录状态
登录成功之后,再次打开APP,直接进入APP主页面,不需要再次登录。
点击退出登录按钮,退出登录状态,打开登录界面
二、登录案例任务分解
1.需要保存哪些数据
用户名(String)
密码 (String)
登录状态 (int,可以用1代替登录、0代替非登录)
2.什么时候保存数据
2.1.登录成功时,保存用户名、密码、登录状态(1)
2.2.退出登录时,保存登录状态(0)
3.什么时候读取数据
3.1.显示登录界面时,读取用户名、密码数据,用于显示
3.2 打开App时,读取登录状态数据,用于判断显示哪个界面
- 如果当前是非登录状态,打开登录界面显示
- 如果是登录状态,打开主页面显示
三、主页MainActivity代码实现
1.定义全局变量
final String sf_name="login_info"; //定义SharedPreferences 存储对象名
SharedPreferences sf;
SharedPreferences.Editor editor;
EditText et_user, et_pwd;
2.onCreate()方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sf = getSharedPreferences(sf_name,MODE_PRIVATE); //获取SharedPreferences 存储对象
editor=sf.edit();//获取该对象的编辑器
//TODO 1. 判断登录状态
int state=sf.getInt("login_state",0);
if(state==1){
Intent intent = new Intent(this,InfoActivity.class);
startActivity(intent);
finish();
}
setContentView(R.layout.activity_main);
et_user = findViewById(R.id.et_user);
et_pwd = findViewById(R.id.et_pwd);
//TODO 2. 读取上次输入的用户名密码显示
et_user.setText(sf.getString("username",""));
et_pwd.setText(sf.getString("password",""));
}
3.onLogin()方法
public void onLogin(View view){
//TODO 用户名密码不能为空
if(et_user.getText().toString().equals("") || et_pwd.getText().toString().equals("")){
Toast.makeText(MainActivity.this,"用户名和密码不能为空!",Toast.LENGTH_SHORT).show();
return;
}
//TODO 3. 保存登录状态和用户名密码
editor.putInt("login_state",1);
editor.putString("username",et_user.getText().toString());
editor.putString("password",et_pwd.getText().toString());
editor.commit();
//TODO 打开第二个Activity,并把用户名传递过去
Intent intent = new Intent(this,InfoActivity.class);
// intent.putExtra("username",et_user.getText().toString());
startActivity(intent);
finish();
}
四、个人信息InfoActivity代码实现
1.定义全局变量
final String sf_name="login_info";
SharedPreferences sf;
SharedPreferences.Editor editor;
2.onCreate()方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
tw_user = findViewById(R.id.tw_user);
tw_name = findViewById(R.id.tw_name);
tw_phone = findViewById(R.id.tw_phone);
tw_email = findViewById(R.id.tw_email);
//TODO 1. 读取用户名信息并显示
sf = getSharedPreferences(sf_name,MODE_PRIVATE);
editor=sf.edit();
tw_user.setText("账号:"+sf.getString("username",""));
}
3.onLogout()方法
public void onLogout(View view){
//TODO 2. 修改登录状态,启动MainActivity,并将当前页面关闭
editor.putInt("login_state",0);
editor.commit();
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了登录案例的实现步骤。
大家在此基础上可以完善程序功能,判断用户名和密码是否合法(如用户名=‘123’,密码=‘123’则允许登录,否则提示信息错误,继续输入账号密码)。