Android - sauver l'Objet de SharedPreferences et obtenir n'importe où dans l'application

Dans mon application j'ai un custom User classe qui détient une partie des données (nom, etc...). J'ai besoin pour économiser de l'objet et de l'obtenir n'importe où et n'importe quand dans les autres pages de l'application. J'ai fait une classe helper public final class GeneralMethods avec beaucoup de méthodes que j'utilise beaucoup (statique, bien sûr).
Afin d'enregistrer les données en Im en utilisant Gson de la bibliothèque. J'ai fait cette méthode:

public static void saveData(Context con, String variable, String data)
{
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
    prefs.edit().putString(variable, data).apply();
}

Pour enregistrer un objet, j'utilise cette méthode comme suit:

Gson gson = new Gson();
String stringUser = gson.toJson(newUser);    
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);

Pour charger les données en arrière, je suis en utilisant cette méthode statique:

public static String getData(Context con, String variable, String defaultValue)
{
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
    String data = prefs.getString(variable, defaultValue);
    return data;
}

Je n'ai pas vraiment savoir comment faire pour récupérer les données, c'est ce que j'ai fait jusqu'à présent:

Gson gson = new Gson();
String user="";
String value="";
user = GeneralMethods.getData(SplashScreenActivity.this,value,"userObject");

Im aux prises avec la getData méthode, comment dois-je analyser les données de String retour à la User type?

MODIFIER

J'ai essayé les suggestions ci-dessous et je reçois toujours NULL. Peut-être que je n'ai pas enregistrer l'objet dans le droit chemin?

EDIT2

Il semble Im ne génère pas l'objet correctement et, par conséquent, rien n'est enregistré. C'est l'utilisateur "Singleton" classe:

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);
    }
}

C'est de cette façon que je peux configurer l'objet avec les données pertinentes (nom d'utilisateur comme paramètre du constructeur):

   User.init(name);

C'est de cette façon-je convertir l'objet d'un String:

   Gson gson = new Gson();
    String stringUser = gson.toJson(User.getInstance());
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Mauvaise idée que d'utiliser la sérialisation pour le stockage des données. Utiliser quelque chose pour le stockage des données. Domaine par exemple.

OriginalL'auteur undroid | 2015-04-02