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(上下文);使用此选项在两个类中获得剪切优先权问题仍然存在,很明显你做得不对-只需仔细检查,并使用意图而不是剪切优先权我知道我做得很好,但我不知道我错在哪里