2011-06-13 49 views
16

在我的應用程序中,我試圖使用sharedPreferences來保存一些基本設置以及首選項屏幕。我sharedPreferences的名字是appPrefs,因此我的文件名爲.../appPrefs.xml 然而,我的應用程序的屏幕保存它在defaultSharedPreference文件,該文件是com.COMPANY.PACKAGENAME_preferences.xml我可以更改首選項文件名嗎?

我想什麼喜好要做的是讓我的首選項屏幕將其首選項讀取/寫入appPrefs文件。我查看了API並找不到任何東西。我堅持管理兩個sharedPreference文件嗎?

回答

6

你嘗試:

PreferenceManager.setSharedPreferencesName 
+0

我試過了,但是我不斷收到一個錯誤,說該函數不存在。 此外,addPreferencesFromResource沒有變量來傳遞PreferenceManager,因此我不知道如何將兩者綁定在一起,即使我可以使函數正常工作。 – user543010 2011-06-13 22:08:34

+0

哪個錯誤?哪個「功能」?請添加代碼和堆棧跟蹤。 – Snicolas 2011-06-13 22:09:31

+0

通過一些例子,我發現這個函數可以通過從getPreferenceManager()調用它來調用,所以我能夠做到這一點。我會看看它是否使用此首選項名稱而不是默認名稱。 – user543010 2011-06-13 22:12:23

30

只是回答有關如何與新PreferenceFragment API使用不同的共享設置名稱的問題,您需要添加以下代碼重寫的onCreate時:

public static class PrefsFragment extends PreferenceFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     PreferenceManager manager = getPreferenceManager(); 
     manager.setSharedPreferencesName("YOUR_SETTINGS_NAME"); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+2

使用'PreferenceFragmentCompat',我不得不在'onCreatePreferences'方法(而不是onCreate)中定義設置文件名以使其工作。 – TouchBoarder 2016-01-11 07:43:44