【问题标题】:Can I change Preferences file name?我可以更改首选项文件名吗?
【发布时间】:2011-09-13 14:58:01
【问题描述】:

在我的应用程序中,我尝试使用 sharedPreferences 来保存一些基本设置以及首选项屏幕。我的 sharedPreferences 的名称是 appPrefs,因此我的文件名是 .../appPrefs.xml 但是,我的应用程序屏幕将其首选项保存在 defaultSharedPreference 文件中,即 com.COMPANY.PACKAGENAME_preferences.xml

我想做的是让我的首选项屏幕读/写它的首选项到 appPrefs 文件。我查看了 API 并找不到任何东西。我是否被困在管理两个 sharedPreference 文件中?

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    你试过了吗:

    PreferenceManager.setSharedPreferencesName 
    

    【讨论】:

    • 我试过了,但我一直收到一个错误,提示该函数不存在。此外,addPreferencesFromResource 没有传递 PreferenceManager 的变量,所以即使我可以让函数正常工作,我也不知道如何将两者绑定在一起。
    • 哪个错误?哪个“功能”?请添加代码和堆栈跟踪。
    • 在浏览了一些示例之后,我发现可以通过从 getPreferenceManager() 调用该函数来调用它,所以我能够做到这一点。我会看看它是否使用此首选项名称而不是默认名称。
    【解决方案2】:

    只是为了回答关于如何通过新的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);
        }
    }
    

    【讨论】:

    • 使用PreferenceFragmentCompat,我必须在onCreatePreferences方法(而不是onCreate)中定义设置文件名才能工作。
    • 是的,如果你有像@TouchBoarder 一样的问题,只需将此行添加到onCreatePreferences 方法:PreferenceManager manager = getPreferenceManager(); manager.setSharedPreferencesName("WHATEVER");
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2011-04-14
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多