Android: guarde Object en SharedPreferences y llévelo a cualquier lugar de la aplicación
En mi aplicación tengo una costumbreUser
clase que contiene algunos datos regulares (nombre, etc.). Necesito guardar ese objeto y obtenerlo en cualquier lugar y en cualquier momento en otras páginas de la aplicación. Hice una clase de ayudapublic final class GeneralMethods
con muchos métodos que uso mucho (estáticos, por supuesto).
Para guardar los datos estoy usandoGson
biblioteca. Hice este método:
public static void saveData(Context con, String variable, String data)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
prefs.edit().putString(variable, data).apply();
}
Para guardar un objeto, uso este método de la siguiente manera:
Gson gson = new Gson();
String stringUser = gson.toJson(newUser);
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Para volver a cargar los datos, estoy usando este método estático:
public static String getData(Context con, String variable, String defaultValue)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
String data = prefs.getString(variable, defaultValue);
return data;
}
Realmente no sé cómo recuperar los datos, esto es lo que he hecho hasta ahora:
Gson gson = new Gson();
String user="";
String value="";
user = GeneralMethods.getData(SplashScreenActivity.this,value,"userObject");
Estoy luchando con elgetData
método, ¿cómo analizo los datos deString
de vuelta aUser
¿tipo?
EDITAR
Intenté las sugerencias a continuación y siempre reciboNULL
. ¿Quizás no guardo el objeto de la manera correcta?
EDIT2
Parece que no estoy generando el objeto correctamente y, por lo tanto, no se está guardando nada. Esta es la clase de usuario "Singleton":
public class User implements Serializable {
private static User userInstance=null; //the only instance of the class
private static String userName; //userName = the short phone number
private User(){}
public static User getInstance(){
if(userInstance ==null){
userInstance = new User();
}
return userInstance;
}
public static User getUserInstance() {
return userInstance;
}
public String getUserName(){
return this.userName;
}
public static void setUserName(String userName) {
User.userName = userName;
}
public static void init(String _userName) {
User.setUserName(_userName);
}
}
Así es como configuro el objeto con los datos relevantes (nombre de usuario como parámetro del constructor):
User.init(name);
Así es como convierto el objeto en unString
:
Gson gson = new Gson();
String stringUser = gson.toJson(User.getInstance());
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);