登录界面之记住密码

文章目录

  • 登录界面之记住密码
    • 文件存储的方式:
    • 记住密码
    • 存储数据
    • 读取数据
    • 完整代码

登录界面的博客: https://blog.csdn.net/genijmni/article/details/106240013欢迎大家前来一同学习。
效果如下:

上图为记住密码演示,下图为不记住密码演示

文件存储的方式:

  1. 把数据存储到文件中
  2. SharedPreferences存储
  3. SQLite数据库存储

这三种方式都能完成我们对数据的存储与读取,但配合记住密码的演示,我们采取第二种方式——SharedPreferences存储。

记住密码

在上一篇以及提到,记住密码需要一个控件:CheckBox,这是一个单选控件。
除了控件我们还需要利用SharedPreferences,进行数据的存储与读取。

private SharedPreferences preferences;  //利用SharedPreferencespreferences = PreferenceManager.getDefaultSharedPreferences(this);private SharedPreferences .Editor editor;private CheckBox remember;  //定义记住密码remember = (CheckBox) findViewById(R.id.remember);

完成这些控件和方法的定义后,我们需要理清楚逻辑:

  1. 将我输入在EditText的账号密码存储到SharedPreferences里
  2. 当我勾选记住密码时,下一次启动APP,自动读取SharedPreferences中的数据
  3. 当我取消勾选记住密码时,下一次启动App,取消读取SharedPreferences中的数据

存储数据

boolean isRemember = preferences.getBoolean("remember_password",false);if (isRemember){    String Name = preferences.getString("Name","");    String Password = preferences.getString("Password","");    NameEdit.setText(Name);    PasswordEdit.setText(Password);    remember.setChecked(true);}

这一步将输入的数据存储到SharedPreferences,不管是否能够登录。

读取数据

这里利用==if{}else{}==逻辑,完成是否读取数据的操作

editor = preferences.edit();if(remember.isChecked()){    editor.putBoolean("remember_password",true);    editor.putString("Name",Name);    editor.putString("Password",Password);}else{editor.clear();}editor.apply();

isChecked为是否勾选了记住密码,当勾选了。下次启动App后,完成记住项目,若没有勾选,则不启动读取。
效果如下:

上图为记住密码演示,下图为不记住密码演示

完整代码

public class MainActivity extends AppCompatActivity {    private SharedPreferences preferences;    private SharedPreferences .Editor editor;    private EditText NameEdit;    private EditText PasswordEdit;    private Button login;    private CheckBox remember;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        preferences = PreferenceManager.getDefaultSharedPreferences(this);        NameEdit = (EditText) findViewById(R.id.Name);        PasswordEdit = (EditText) findViewById(R.id.Password);        remember = (CheckBox) findViewById(R.id.remember);        login = (Button) findViewById(R.id.login);        boolean isRemember = preferences.getBoolean("remember_password",false);        if (isRemember){            String Name = preferences.getString("Name","");            String Password = preferences.getString("Password","");            NameEdit.setText(Name);            PasswordEdit.setText(Password);            remember.setChecked(true);        }        login.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String Name = NameEdit.getText().toString();                String Password = PasswordEdit.getText().toString();                if (TextUtils.isEmpty(NameEdit.getText().toString()) || TextUtils.isEmpty(PasswordEdit.getText().toString())) {                    Toast.makeText(MainActivity.this, "用户名或者密码不能为空", Toast.LENGTH_SHORT).show();                } else                if(Name.equals("CSDN")&&Password.equals("12345678")){                    editor = preferences.edit();                    if(remember.isChecked()){                        editor.putBoolean("remember_password",true);                        editor.putString("Name",Name);                        editor.putString("Password",Password);                    }else{editor.clear();}                    editor.apply();                    Intent intent = new Intent(MainActivity.this,Receiver.class);                    intent.putExtra("Name",Name);                    intent.putExtra("Password",Password);                    startActivity(intent);                    Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();                    finish();                }else {Toast.makeText(MainActivity.this,"账号密码错误",Toast.LENGTH_SHORT).show();}            }        });    }}

下一次讨论一下APP的启动动画,和软件的隐藏标题和隐藏系统状态栏是如何完成的。

更多相关文章

  1. Android之原生动作
  2. Android(安卓)MediaStore详解
  3. Android教程之MediaStore
  4. android中的sqlite数据库加密
  5. SwipeRefreshLayout 配合fragment 下拉刷新的使用,超级简单
  6. Android系统多媒体框架添加对.wma格式的支持
  7. 【Android】19.3 ContentProvider及安卓进一步封装后的相关类
  8. Android之Adapter用法总结
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. 从Android到iOS开发——(1)、objective-c
  2. 抛砖引玉,谈谈Android移植到现有硬件平台
  3. mysql横向转纵向、纵向转横向排列的方法
  4. navicat创建MySql定时任务的方法详解
  5. MySql比较运算符正则式匹配REGEXP的详细
  6. 记一次MySQL的优化案例
  7. 谈谈MySQL中的隐式转换
  8. 详解MySQL 8.0 之不可见索引
  9. 实例验证MySQL|update字段为相同的值是否
  10. mysql 8.0.22 安装配置方法图文教程