Могу ли я изменить имя файла настроек?

В своем приложении я пытаюсь использовать sharedPreferences, чтобы сохранить некоторые основные настройки, а также экран настроек. Имя для моих общих настроек — appPrefs, поэтому имя моего файла — .../appPrefs.xml. Однако экран моего приложения сохраняет свои настройки в файле общих настроек по умолчанию, который называется com.COMPANY.PACKAGENAME_preferences.xml.

Я хотел бы, чтобы мой экран настроек читал/записывал свои настройки в файл appPrefs. Я посмотрел в API и ничего не могу найти. Я застрял, управляя двумя файлами sharedPreference?


person user543010    schedule 13.06.2011    source источник


Ответы (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);
    }
}
person dragoon    schedule 09.07.2013
comment
Используя PreferenceFragmentCompat, мне пришлось определить имя файла настроек в методе onCreatePreferences (вместо onCreate), чтобы он работал. - person TouchBoarder; 11.01.2016
comment
Да, если у вас такая же проблема, как у @TouchBoarder, просто добавьте эти строки в метод onCreatePreferences: PreferenceManager manager = getPreferenceManager(); manager.setSharedPreferencesName("WHATEVER"); - person phrogg; 07.07.2019

Ты пробовал:

PreferenceManager.setSharedPreferencesName 
person Snicolas    schedule 13.06.2011
comment
Я пробовал, но постоянно получаю сообщение о том, что функция не существует. Кроме того, у addPreferencesFromResource нет переменной для передачи PreferenceManager, поэтому я не знаю, как связать их вместе, даже если бы я мог заставить функцию работать правильно. - person user543010; 14.06.2011
comment
Какая ошибка? Какая функция? Добавьте код и трассировку стека, пожалуйста. - person Snicolas; 14.06.2011
comment
Просмотрев несколько примеров, я обнаружил, что эту функцию можно вызвать, вызвав ее из getPreferenceManager(), поэтому я могу это сделать. Я посмотрю, использует ли он это имя предпочтения вместо имени по умолчанию. - person user543010; 14.06.2011