我可以更改偏好设置文件名吗?

22

在我的应用程序中,我试图使用sharedPreferences保存一些基本设置和偏好界面。我的sharedPreferences的名称为appPrefs,因此我的文件名是.../appPrefs.xml。 然而,我的应用程序屏幕将其偏好保存在默认的共享偏好文件com.COMPANY.PACKAGENAME_preferences.xml中。

我想要实现的是让我的偏好界面读/写其偏好到appPrefs文件中。我查看了API,但找不到相关内容。我是否必须同时管理两个sharedPreference文件?

2个回答

42

为了回答如何在新的PreferenceFragment API中使用不同的共享设置名称的问题,您需要在覆盖onCreate时添加以下代码:


为了使用不同的共享设置名称,您需要在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);
    }
}

7
使用PreferenceFragmentCompat,我必须在onCreatePreferences方法中定义设置文件名(而不是在onCreate中),才能使其工作。 - TouchBoarder
1
如果你遇到了和@TouchBoarder一样的问题,只需要在onCreatePreferences方法中添加以下代码即可:PreferenceManager manager = getPreferenceManager(); manager.setSharedPreferencesName("WHATEVER"); - phrogg

9

你尝试过以下方法吗:

PreferenceManager.setSharedPreferencesName 

我已经尝试过了,但是一直出现一个错误提示说该函数不存在。另外,addPreferencesFromResource没有一个变量可以传递PreferenceManager,所以即使我能正确地让这个函数工作,我也不知道如何将它们绑定在一起。 - user543010
哪个错误?哪个“函数”?请添加代码和堆栈跟踪。 - Snicolas
经过查看一些示例,我发现可以通过从getPreferenceManager()调用该函数来调用它,因此我能够这样做。我将看看它是否使用此首选项名称而不是默认值。 - user543010

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接