使用SharedPreferences来实现轻量级的存储,使用键值对的存储方法。存储数据和读取数据时都需要之间键值。
记住密码以及自动登录的实现主要依赖于SharedPreferences类的使用,SharedPreferences是一个轻量级的存储类,用于存储一些小数据,比如登录账号密码以及状态信息等。
在登录页面的onCreate()中获取preferences对象。
在SharePreferences存储数据主要分4步实现;
(1)调用PreferenceManager类中的getDefaultSharedPreferences(Context context) 获取SharedPreferences对象。
(2)调用SharedPrefenrences对象的Editor方法来获取一个SharedPreferences.Editor对象。
(3)向SharedPreferences.Editor对象添加数据,比如添加布尔型数据就调用putBoolean(key, value) 方法。
(4)调用apply()方法将添加的数据提交,完成数据存储的操作。
在SharePreferences存储数据主要分2步实现;
(1)调用PreferenceManager类中的getDefaultSharedPreferences(Context context) 获取SharedPreferences对象。
(2)调用SharedPreferences.getString(key)/getBoolean(key)获取不同类型的数据
注意:SharedPreferences对象的获取不止有上述步骤(1)中的方法,还有另外两种方法
public class LoginActivity extends AppCompatActivity {
private EditText accountEdit;
private EditText passwordEdit;
private Button login;
private CheckBox rememberPass;
private SharedPreferences.Editor editor;
private SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
pref = PreferenceManager.getDefaultSharedPreferences(this);
accountEdit = findViewById(R.id.account);
passwordEdit = findViewById(R.id.password);
login = findViewById(R.id.login);
rememberPass = findViewById(R.id.remember_pass);
boolean isRemember = pref.getBoolean("remember_password", false);
// 本地有记住的密码记录就填到文本框
if (isRemember){
accountEdit.setText(pref.getString("account",""));
passwordEdit.setText(pref.getString("password",""));
rememberPass.setChecked(true);
}
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String account = accountEdit.getText().toString();
String password = passwordEdit.getText().toString();
if (account.equals("admin") && password.equals("123456")){
editor = pref.edit();
if (rememberPass.isChecked()){
editor.putString("account", account);
editor.putString("password", password);
editor.putBoolean("remember_password", true);
} else {
editor.clear();
}
editor.apply();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(LoginActivity.this,"账号密码错误",Toast.LENGTH_SHORT).show();
}
}
});
}
}