不会在所有上下文中删除首选项

时间:2017-04-19 18:46:45

标签: android android-activity sharedpreferences android-preferences

我有一个首选的Util类看起来像这样:

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

问题是,如果我尝试从一个上下文中删除“TOKEN”首选项(例如MainActivity):

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

如果我从不同的上下文(例如UserActivity)调用它,它仍然存在。

如何在整个应用中删除TOKEN首选项?我应该在Util类中以不同方式处理我的首选项吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

尝试修改你的getSharedPreferences方法:

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

目前您正在使用不同的上下文获取共享首选项,因此可能会导致问题。