Android 无法清除碎片首选项
这是在我的主活动类中,我可以通过共享首选项在其他类中传递和检索数据,但我无法清除其他类中的共享首选项。还告诉我如何检查共享首选项是否已清除Android 无法清除碎片首选项,android,Android,这是在我的主活动类中,我可以通过共享首选项在其他类中传递和检索数据,但我无法清除其他类中的共享首选项。还告诉我如何检查共享首选项是否已清除 SharedPreferences sharedPreferences; public static final String MyPREFERENCES = "MyPrefs" ; public static final String Name = "userKey"; public static final String Pass = "passKey"
SharedPreferences sharedPreferences;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String Name = "userKey";
public static final String Pass = "passKey";
sharedPreferences=getApplicationContext().getSharedPreferences(MyPREFERENCES,MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(Name,userName);
editor.putString(Pass,password);
editor.commit();
这是在我的另一个班
SharedPreferences sharedPreferences;
sharedPreferences=getApplicationContext().getSharedPreferences(SignUPActivity.MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.apply();
editor.commit();
可能的原因是您没有使用相同的首选项 在您的第一个活动中,您将使用:
sharedPreferences = getApplicationContext()
.getSharedPreferences(MyPREFERENCES,MODE_PRIVATE);
在其他活动中,你也应该使用它
试着读这些
也来自文档
检索一个SharedReferences对象,以访问以下首选项:
这项活动是私人的。这就是所谓的底层
通过传入此活动的
类名称作为首选项名称
您好,如果您只想将值从一个活动传递到另一个活动,或从一个片段传递到其他活动,我建议您使用INTENT传递数据 看看这个例子如何通过- 也- SharedReferences用于永久存储在应用程序中的所有活动的数据时,您也可以清除数据 从剪切Preference中删除给定字符串
public static void removeFromSharedPreferences(Context mContext, String key) {
if (mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences(Constants.SHARED_PREFERENCES_NAME, 0);
if (mSharedPreferences != null)
mSharedPreferences.edit().remove(key).commit();
}
}
从SharedReference中删除所有值
public static void removeSharedPreferences(Context mContext) {
if (mContext != null) {
SharedPreferences preferences = mContext.getSharedPreferences("PREFERENCE", 0);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
}
}
代码不起作用的原因是必须通过上下文。MODE_PRIVATE insted MODE_PRIVATEjsut确认两者的值应该相同
将此代码放在两个类中
SharedPreferences app_preferences = PreferenceManager
.getDefaultSharedPreferences(context);
SharedReferences的名称不是一个。因此无法清除碎片偏好。请先检查文件名。删除编辑器。应用();。您已经调用了editor.commit();我已经更改了名称并删除了editor.apply();仍然不工作SharedReferences app_preferences=PreferenceManager.GetDefaultSharedReferences(上下文);使用此选项在两个类中获得剪切优先权问题仍然存在,很明显你做得不对-只需仔细检查,并使用意图而不是剪切优先权我知道我做得很好,但我不知道我错在哪里