0

ich eine Vorliebe Util Klasse, die wie folgt aussieht:Preference nicht über alle entfernt werden Kontexte

public class PreferenceUtils { 
    public static SharedPreferences getSharedPreferences(final Context context) { 
     return PreferenceManager.getDefaultSharedPreferences(context); 
    } 

    public static String getToken(final Context context) { 
     SharedPreferences sp = getSharedPreferences(context); 
     return sp.getString("TOKEN", null); 
    } 

    public static void setToken(final Context context, final String token) { 
     SharedPreferences sp = getSharedPreferences(context); 
     sp.edit().putString("TOKEN", token).apply(); 
    } 
} 

Das Problem ist, wenn ich versuche, die „token“ Präferenz von einem Kontext zu entfernen (MainActivity, zum Beispiel):

SharedPreferences prefs = PreferenceUtils.getSharedPreferences(context); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.remove("TOKEN"); 
editor.apply(); 

es existiert immer noch, wenn ich es aus einem anderen Kontext (UserActivity, zum Beispiel) nennen.

Wie kann ich die TOKEN-Einstellung in der gesamten App entfernen? Sollte ich meine Vorlieben in meiner Util-Klasse anders behandeln?

+0

Ihr Code sieht gut aus. Können Sie versuchen, sich zu verpflichten statt sich zu bewerben? –

+0

Gleiche Ergebnisse mit commit. :/ – user651342

Antwort

0

Try this:

editor.putString("TOKEN", ""); 
editor.commit(); 
+0

Immer noch den falschen Wert in anderen Kontexten. – user651342

0

Versuchen Sie getSharedPreferences Methode wie folgt ändern:

public static SharedPreferences getSharedPreferences(final Context context) { 
    return PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); 
} 

Im Moment Sie mit verschiedenen Kontexten gemeinsamen Vorlieben bekommen, so dass es zu Problemen führen kann.

Verwandte Themen