我有一个首选的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类中以不同方式处理我的首选项吗?
答案 0 :(得分:0)
试试这个:
editor.putString("TOKEN", "");
editor.commit();
答案 1 :(得分:0)
尝试修改你的getSharedPreferences方法:
public static SharedPreferences getSharedPreferences(final Context context) {
return PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
}
目前您正在使用不同的上下文获取共享首选项,因此可能会导致问题。