2017-06-16 60 views
0

我已經在一個活動中聲明瞭兩個共享首選項。這兩個共享偏好與邏輯控制。如果如圖android - 嘗試使用鍵名清除共享首選項

 if(logic == true){ 
     // remove shared preferences of a particular keyname 
     SharedPreferences sharedPreferencesGiver = getSharedPreferences("editorCodeGiver", Context.MODE_PRIVATE); 
//assuming that editorCodeGiver is the name of the shared preferences declared below in the else block 
          SharedPreferences.Editor editGiv = sharedPreferencesGiver.edit(); 
          editGiv.clear().commit(); 
     }else{ 
    //dont clear shared preferences 

     SharedPreferences sharedPrefCodeGiver = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
           SharedPreferences.Editor editorCodeGiver = sharedPrefCodeGiver.edit(); 
           editorCodeGiver.putInt("statusCodeGiver", 202); // 
           editorCodeGiver.commit(); 

    } 

塊請我怎麼能清除在其他聲明的共享偏好阻止

回答

0

用於清除所有sharedPreferences值做到這一點

mSharedPreferences.edit().clear().commit(); 

這條線清晰的所有值

清晰一個值,你可以這樣做:

mSharedPreferences.edit().putString("keyName",null).commit(); 
+0

我不想清除所有共享首選項。我想有選擇地清除 – parker

+0

你該做什麼? –

+0

我想清除一個共享首選項。像這裏初始化的那個>>>>> SharedPreferences.Editor editorCodeGiver = sharedPrefCodeGiver.edit(); – parker

1
SharedPreferences sharedPrefCodeGiver = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
           SharedPreferences.Editor editorCodeGiver = sharedPrefCodeGiver.edit(); 
           //editorCodeGiver.putInt("statusCodeGiver", 202); <- change this line 
           editorCodeGiver.remove(String key); // <- to this 
           editorCodeGiver.commit(); 

信息:

你不使用相同的SharedPreference,一次是

getSharedPreferences("editorCodeGiver", Context.MODE_PRIVATE); 

和其它時間:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

檢查這個答案知道如何選擇正確的實例https://stackoverflow.com/a/9513032/4690394

+0

這意味着Context.MODE_PRIVATE與其他getApplicationContext() – parker

+0

不同,它不是一回事,Context.MODE_PRIVATE是創建共享首選項的模式。這是默認模式,創建的文件只能由調用應用程序訪問(僅適用於您的應用程序)。如果你注意我發給你的鏈接,第二種方法PreferenceManager.getDefaultSharedPreferences(getApplicationContext());使用私人模式自動調用context.getSharedPreferences。 https://stackoverflow.com/a/6310080/4690394 – NeoSyder

+0

getApplicationContext是對您的應用程序的引用,但您可以在這種情況下傳遞一個活動或服務 – NeoSyder