2011-06-13 46 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