Android - Objekt in SharedPreferences speichern und überall in der App herunterladen

n meiner App habe ich ein benutzerdefiniertesUser Klasse, die einige reguläre Daten enthält (Name etc ...). Ich muss dieses Objekt speichern und es jederzeit und überall auf anderen Seiten der App abrufen. Ich habe eine Helferklasse gemachtpublic final class GeneralMethods mit vielen Methoden, die ich viel benutze (natürlich statisch).
Um die Daten zu speichern, verwende ichGson Bibliothek. Ich habe diese Methode gemacht:

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

Um ein Objekt zu speichern, benutze ich diese Methode wie folgt:

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

Zum Zurückladen der Daten verwende ich diese statische Methode:

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

Ich weiß nicht wirklich, wie ich die Daten zurückbekomme, das habe ich bisher gemacht:

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

Im kämpft mit demgetData Methode, wie analysiere ich die Daten vonString zurück zumUser Art


BEARBEITE
Ich habe die Vorschläge unten ausprobiert und bekomme immerNULL. Vielleicht speichere ich das Objekt nicht richtig?


EDIT2
Es scheint, dass ich das Objekt nicht richtig generiere und daher nichts gespeichert wird. Dies ist die Benutzer "Singleton" -Klasse:

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

So richte ich das Objekt mit den relevanten Daten ein (Benutzername als Konstruktorparameter):

   User.init(name);

So konvertiere ich das Objekt in einString:

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

Antworten auf die Frage(16)

Ihre Antwort auf die Frage