Я пытаюсь сохранить значения полей имени пользователя и пароля с помощью SharedPreferences и использовать эти значения для заполнения полей EditText. Поля не заполняются, и я не уверен, что я делаю неправильно.Сохранение значений в SharedPreferences
Вот мой метод login(), который вызывается при нажатии кнопки входа в систему. В нем я устанавливаю значения SharedPreferences, если вход успешно завершен, и установлен флажок.
public void login() {
mLoginProgress.setVisibility(View.VISIBLE);
String userNameString = mEmail.getText().toString();
String passwordString = mPassword.getText().toString();
ParseUser.logInInBackground(userNameString, passwordString, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (parseUser != null) {
// Login Successful
if (mSaveLogin.isChecked() == true) {
SharedPreferences preferences = getSharedPreferences("login", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("userName", mEmail.getText().toString());
editor.putString("password", mPassword.getText().toString());
}
mLoginProgress.setVisibility(View.GONE);
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
LoginActivity.this.startActivity(intent);
}
else {
// Login Failed
mLoginProgress.setVisibility(View.GONE);
String exception = e.getMessage().toString();
Toast.makeText(getApplicationContext(), exception, Toast.LENGTH_SHORT).show();
}
}
});
}
В OnCreate() У меня есть этот код, чтобы заполнить поля EditText со значениями SharedPreferences.
SharedPreferences pref = getSharedPreferences("login", MODE_PRIVATE);
mEmail.setText(pref.getString("userName", ""));
mPassword.setText(pref.getString("password", ""));
Пожалуйста, не храните пароль. Храните соленый хеш и сравнивайте сохраненное значение с засоленным хешем ввода пользователя. –