2013-08-21 67 views
3

我有一個安卓應用程序,其中包含許多活動以及一些特定的首選項文件。當用戶註銷我的應用程序時,我想刪除絕對所有共享的首選項。瞭解我不能使用context.getSharedPreferences("A_PREFS_FILE", 0).edit().clear().commit(),因爲這隻會清除一個特定的文件。我想清除與我的應用程序關聯的所有首選項文件。有沒有辦法做到這一點?當用戶註銷時,爲我的應用程序刪除所有sharedPreferences

+0

http://stackoverflow.com/questions/3687315/deleting-shared-preferences – Raghunandan

+0

'明顯的()'是一個非靜態方法,因此'SharedPreferences.Editor.clear()'不起作用。所有其他的例子都在做我特別說過的我不想做的事情。此外,以下將是一個空指針:'編輯器defaultPrefsPut; defaultPrefsPut.clear(); defaultPrefsPut.commit();' –

+0

隨後清除每個首選項文件(即循環中)會出現什麼問題? –

回答

0

爲什麼不具有跟蹤所有關聯文件的SharedPreference;然後,在onPause或onStop中,將該值解析爲SharedPreferences.Editor.clear()。commit()中的每一個...然後刪除最後一個?

-1

如果您不希望它們持續存在,爲什麼要使用共享首選項?只需將您的偏好設置爲全局變量。偏好背後的整個想法是,它們持續在應用程序的啓動之間。

1

首先,你必須clear然後下次調用commit 試試:

SharedPreference.Editor pref = context.getSharedPreferences("A_PREFS_FILE", 0).edit(); 
pref.clear(); 
pref.commit(); 

我有懷疑過一次,但我已經解決了這個樣子。

可能有用;)謝謝...

8

只要把下面的代碼,它的工作原理非常適合我.....下面的代碼行

getApplicationContext().getSharedPreferences("CREDENTIALS", 0).edit().clear().commit(); 
1

使用刪除您的喜好... .......

prefs.edit().remove("YOURTAG1").commit(); 
    prefs.edit().remove("YOURTAG2").commit(); 
11

通過這種方式,你可以在那些文件全部刪除。通過明確 (),它會刪除數據文件仍然存在..

File sharedPreferenceFile = new File("/data/data/"+ getPackageName()+ "/shared_prefs/"); 
    File[] listFiles = sharedPreferenceFile.listFiles(); 
    for (File file : listFiles) { 
     file.delete(); 
    } 

這將返回文件,那麼你可以輕鬆地刪除的所有名單..

+0

這是確定刪除所有共享首選項文件的正確方法。 但考慮使用'context.getFilesDir()。getPath()'而不是硬編碼路徑'「/ data/data /」' –

相關問題