Мога ли да променя името на файла с предпочитания?

В моето приложение се опитвам да използвам sharedPreferences, за да запазя някои основни настройки, както и екран с предпочитания. Името на моите sharedPreferences е appPrefs и по този начин името на моя файл е .../appPrefs.xml Екранът на приложението ми обаче запазва своите предпочитания във файла defaultSharedPreference, който е 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, трябваше да дефинирам името на файла с настройки в onCreatePreferencesmethod (вместо в 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