Я пытаюсь создать приложение, которое использует имя пользователя и пароль для входа в систему, а затем оставаться в системе до тех пор, пока пользователь не вышел из системы, или, конечно, не удалил данные приложения, и насколько я знаю, SharedPreferences является лучшим для этого. Как мне правильно это реализовать?
Я пытался создать объект SharedPreferences, а затем объект «Редактор», чтобы при запуске приложения проверять, сохранены ли данные для имени пользователя и пароля, и если это так, то входить автоматически. Затем для выхода из системы, после нажатия кнопки «Выход», имя пользователя и пароль удаляются из SharedPreferences. Но я не уверен, наверное, я сделал это неправильно, поэтому приложение не работает.
Вот простой пример того, что я хочу сделать (предположим, что все XML-файлы и идентификаторы верны, потому что приложение работало нормально до добавления SharedPreferences):
LoginActivity.java:
public class LoginActivity extends AppCompatActivity {
private Button button_login;
private EditText editText_username;
private EditText editText_password;
private SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
perf = getApplicationContext().getSharedPreferences("user_pref", 0);
SharedPreferences.Editor editor = perf.edit();
if(!(sharedPref.getString("username", null)).isEmpty() && !(sharedPref.getString("password", null)).isEmpty()){
doLogin(sharedPref.getString("username", null), sharedPref.getString("password", null));
}
//define editText_username, editText_password and button_login
button_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!TextUtils.isEmpty(editText_username.getText()) && !TextUtils.isEmpty(editText_password.getText())){
doLogin(editText_username.getText().toString().trim(), editText_password.getText().toString().trim());
}
}
});
}
public void doLogin(String username, String password) {
Intent loginIntent = new Intent(LoginActivity.this, HomeActivity.class);
SharedPreferences.Editor editor = perf.edit();
editor.putString("username", username);
editor.putString("password", password);
startActivity(loginIntent);
finish();
}
}
HomeActivity.java:
public class HomeActivity extends AppCompatActivity {
private SharedPreferences perf;
private Button button_logout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
perf = getApplicationContext().getSharedPreferences("user_pref", 0);
//button_logout define
button_logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = perf.edit();
editor.remove("username");
editor.remove("password");
Intent logoutIntent = new Intent(HomeActivity.this, LoginActivity.this);
startActivity(logoutIntent);
finish();
}
});
}
Я не получаю никаких результатов, он вылетает. Поэтому я не уверен, правильно ли я это сделал или нет.