2016-12-16 87 views
-1

這是我的主要活動類,我可以通過共享首選項在其他類中傳遞和檢索數據,但無法清除其他類中的共享偏好。同時告訴我如何檢查我的共享首選項已被清除。無法清除碎片首選項

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

刪除_editor.apply(); _。您已經調用_editor.commit(); _ – Piyush

+0

SharedPreferences的名稱不是一個。所以不能清除碎片偏好。請先檢查文件名。 – Mick

+0

我已更改名稱並刪除了editor.apply(); –

回答

0

可能的原因是你沒有使用相同的偏好。

在你的第一個活動,您正在使用:

sharedPreferences = getApplicationContext() 
        .getSharedPreferences(MyPREFERENCES,MODE_PRIVATE); 

而在其他活動,你也應該使用它。

嘗試從文檔

閱讀這些 http://developer.android.com/reference/android/app/Activity.html

還檢索SharedPreferences對象訪問是 私人這項活動的偏好。通過傳入此活動的 類名稱作爲首選項名稱,這只是簡單地調用底層 getSharedPreferences(String,int)方法。

0

你好,如果你只想從一個活動到另一個或一個片段到其它傳遞價值比我建議你使用意向傳遞數據

看看下面這個例子怎麼傳 - http://startandroid.ru/en/lessons/241-lesson-28-extras-passing-data-using-intent.html

而且 - https://stackoverflow.com/a/30166602/4741746

sharedPreferences時所使用的所有活動數據,該數據permanatly存儲在應用程序,你也c用於一個明確的數據

刪除給出從shearedPrefrance

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

字符串從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(); 
    } 
} 

爲什麼你的代碼不工作是你必須passs Context.MODE_PRIVATE insted的MODE_PRIVATE確定兩者應該具有相同的值

將此代碼放在兩個類

SharedPreferences app_preferences = PreferenceManager 
       .getDefaultSharedPreferences(context); 
+0

仍然無效 –

+0

SharedPreferences app_preferences = PreferenceManager 。getDefaultSharedPreferences(上下文);用這個來getShearedPrefrance在這兩個類 –

+0

問題依然 –