这是在我的主要活动类中,我可以通过共享首选项传递和检索我的其他类中的数据,但我无法清除其他类中的共享首选项。还告诉我如何检查我的共享首选项是否已被清除。
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();
答案 0 :(得分:0)
可能的原因是您没有使用相同的偏好。
在您使用的第一个活动中:
sharedPreferences = getApplicationContext()
.getSharedPreferences(MyPREFERENCES,MODE_PRIVATE);
在其他活动中你也应该使用它。
尝试阅读这些内容 http://developer.android.com/reference/android/app/Activity.html
也来自文档
检索SharedPreferences对象以访问其中的首选项 私人参加此活动。这只是调用底层证券 通过传入此活动的getSharedPreferences(String,int)方法 类名作为首选项名称。
答案 1 :(得分:0)
您好,如果您只想将值从一个Activity传递到另一个或一个片段,而不是建议您使用 INTENT 传递数据
请看这个示例如何传递 - http://startandroid.ru/en/lessons/241-lesson-28-extras-passing-data-using-intent.html
另外 - https://stackoverflow.com/a/30166602/4741746
sharedPreferences 用于在应用程序中永久存储的所有活动的数据时,您也可以清除数据
从shearedPrefrance
中删除给定的Stringpublic 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();
}
}
从SharedPrefrance
中删除所有值public static void removeSharedPreferences(Context mContext) {
if (mContext != null) {
SharedPreferences preferences = mContext.getSharedPreferences("PREFERENCE", 0);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
}
}
为什么你的代码不起作用你需要传递 Context.MODE_PRIVATE insted MODE_PRIVATE jsut确认两者应该具有相同的值
将此代码放在两个类
中 SharedPreferences app_preferences = PreferenceManager
.getDefaultSharedPreferences(context);