文章目录

  • 一、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.需求描述

android stuio登陆 android登录状态_android studio

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时,读取登录状态数据,用于判断显示哪个界面

  1. 如果当前是非登录状态,打开登录界面显示
  2. 如果是登录状态,打开主页面显示

三、主页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’则允许登录,否则提示信息错误,继续输入账号密码)。