2011-04-26 22 views
1

我是android新手。我創建了SharedPreferences來存儲播放列表中的播放列表名稱和歌曲名稱。現在我必須重新命名播放列表。如何在Android中重命名現有的共享首選項文件

而另一種是:當我刪除播放列表時,如何刪除SharedPreferences文件(即PlaylistName.xml)?

回答

4

最後,我可以重命名sharedpreference文件。

供參考,在我的上下文的代碼是:

String fileName=etlistName.getText().toString(); 
File f=new File("/data/data/eywa.musicplayer/shared_prefs/"+PlayListName+".xml"); 
f.renameTo(new File("/data/data/eywa.musicplayer/shared_prefs/"+fileName+".xml")); 

SharedPreferences mySharedPreferences=getSharedPreferences("list_of_playlist",Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = mySharedPreferences.edit(); 
editor.remove(PlayListName); 
editor.putString(fileName, fileName); 
editor.commit(); 
PlayListName=fileName; 

以及用於刪除playlistName.xml

for (int i=0; i<selectedItems.size();i++) 
{//remove the songs names from the playlist 
    SharedPreferences sp=getSharedPreferences(selectedItems.get(i),Activity.MODE_PRIVATE); 
    SharedPreferences.Editor ed=sp.edit(); 
    ed.clear(); 
    ed.commit(); 
    //remove the play list name from the list_of_playlist 
    SharedPreferences.Editor editor = mainPref.edit(); 
    editor.remove(selectedItems.get(i)); 
    //delete .xml file 
    File f=new File("/data/data/eywa.musicplayer/shared_prefs/"+selectedItems.get(i)+".xml"); 
    if(f.delete()) 
     System.out.println("file deleted") 
    editor.commit(); 
} 
selectedItems.clear(); 
+0

哎呀!代碼受到干擾! 請嘗試理解。我是新的網站和Android也 謝謝弗拉基米爾伊萬諾夫的建議。 – Baba 2011-05-02 08:51:23

+0

然後,如果它有幫助,你可能想對他的答案進行投票。我還提交了一個編輯答案,以幫助清理格式。 – 2011-05-02 12:15:35

0

您選擇的不是播放列表的最佳存儲空間。數據庫更適合您的需求。 雖然,您仍然可以使用基本的Java io刪除sp文件。

+0

謝謝弗拉基米爾。好的,我將使用數據庫。爲了刪除sp文件,我使用了'deleteFile(fileName);'它不會刪除文件。 – Baba 2011-04-28 06:40:40

4

從文件訪問 「/數據/數據/ ......」 不可靠因爲我認爲所有手機都不一樣(三星設備也是不同的AFAIK)。

我更喜歡下面的方法,它基本上'複製'舊的共享首選項,然後清除它。這種方法不會刪除舊的共享prefs文件本身,但更可靠的恕我直言。

SharedPreferences settingsOld = context.getSharedPreferences(nameOld, Context.MODE_PRIVATE); 
SharedPreferences settingsNew = context.getSharedPreferences(nameNew, Context.MODE_PRIVATE); 
SharedPreferences.Editor editorNew = settingsNew.edit(); 
Map<String, ?> all = settingsOld.getAll(); 
for (Entry<String, ?> x : all.entrySet()) { 

    if  (x.getValue().getClass().equals(Boolean.class)) editorNew.putBoolean(x.getKey(), (Boolean)x.getValue()); 
    else if (x.getValue().getClass().equals(Float.class)) editorNew.putFloat(x.getKey(), (Float)x.getValue()); 
    else if (x.getValue().getClass().equals(Integer.class)) editorNew.putInt(x.getKey(),  (Integer)x.getValue()); 
    else if (x.getValue().getClass().equals(Long.class)) editorNew.putLong(x.getKey(), (Long)x.getValue()); 
    else if (x.getValue().getClass().equals(String.class)) editorNew.putString(x.getKey(), (String)x.getValue()); 

} 
editorNew.commit(); 
SharedPreferences.Editor editorOld = settingsOld.edit(); 
editorOld.clear(); 
editorOld.commit();