, пока я пытаюсь сохранить информацию о входе в систему с помощью SharedPreference, он просто вылетает из моего приложения. После входа приложение сохранит информацию о пользователе в localStore и покажет эти элементы на нескольких страницах. Мой класс User.java:
package com.material.components;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class User {
@SerializedName("name")
@Expose
public String name;
@SerializedName("email")
@Expose
public String email;
@SerializedName("username")
@Expose
public String username;
@SerializedName("customer_id")
@Expose
public String customerId;
@SerializedName("phone")
@Expose
public String phone;
@SerializedName("password")
@Expose
public String password;
public User(String name,String email,String username,String customerId,String phone,String password){
this.name = name;
this.email = email;
this.username = username;
this.customerId = customerId;
this.phone = phone;
this.password = password;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getUsername() {
return username;
}
public String getCustomerId() {
return customerId;
}
public String getPhone() {
return phone;
}
public String getPassword() {
return password;
}
}
Мой UserLocalStorage.java класс:
package com.material.components;
import android.content.Context;
import android.content.SharedPreferences;
public class UserLocalStorage {
public static final String SP_NAME = "userDetails";
SharedPreferences userLocalDatabase;
public UserLocalStorage(Context context){
userLocalDatabase = context.getSharedPreferences(SP_NAME,0);
}
public void storeUserData(User user){
SharedPreferences.Editor spEditor = userLocalDatabase.edit();
spEditor.putString("name",user.name);
spEditor.putString("customer_id",user.customerId);
spEditor.putString("username",user.username);
spEditor.putString("password",user.password);
spEditor.putString("email",user.email);
spEditor.putString("phone",user.phone);
spEditor.commit();
}
public User getLoggedInUser(){
String name = userLocalDatabase.getString("name","");
String customerId = userLocalDatabase.getString("customer_id","");
String username = userLocalDatabase.getString("username","");
String password = userLocalDatabase.getString("password","");
String email = userLocalDatabase.getString("email","");
String phone = userLocalDatabase.getString("phone","");
User storedUser = new User(name,email,username,customerId,phone,password);
return storedUser;
}
public void setUserLoggedIn(boolean loggedIn){
SharedPreferences.Editor spEditor = userLocalDatabase.edit();
spEditor.putBoolean("loggedIn",loggedIn);
spEditor.commit();
}
public boolean getUserLoggedIn(){
if(userLocalDatabase.getBoolean("loggedIn",false)==true){
return true;
}
else{
return false;
}
}
public void clearUserData(){
SharedPreferences.Editor spEditor = userLocalDatabase.edit();
spEditor.clear();
}
}
и мой Класс входа :
//.....after successfully loggedin.....
User user_details = new User(null,null,null,null,null,null);
userLocalStorage.storeUserData(user_details);
userLocalStorage.setUserLoggedIn(true);
Intent dashboard = new Intent(getBaseContext(), Dashboard.class);
startActivity(dashboard);
Кроме того, если я просто распечатаю конкретный элемент из объекта User, он показывает, но не может распечатать весь объект.